1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//! # secpar
//!
//! A CLI tool that wraps the AWS Rust SDK for **Secrets Manager** (`sec`) and
//! **Parameter Store** (`par`), adding interactive selection menus, spinners,
//! confirmation prompts, and formatted tables.
//!
//! ## Authentication
//!
//! Credentials are resolved in the following order (standard AWS credential
//! chain):
//!
//! 1. Environment variables (`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`)
//! 2. AWS credentials file (`~/.aws/credentials`)
//! 3. AWS config file (`~/.aws/config`)
//! 4. IAM instance / task / IRSA roles (EC2, ECS, EKS)
//!
//! ## Global options
//!
//! | Flag | Env var | Default |
//! |------|---------|---------|
//! | `--region` | `AWS_REGION` | `us-east-1` |
//! | `--profile` | `AWS_PROFILE` | *(none)* |
//!
//! ## CLI examples
//!
//! ```text
//! # Show active AWS environment
//! secpar env
//!
//! # Secrets Manager
//! secpar sec list
//! secpar sec get --name my-secret
//! secpar sec get # interactive selection
//! secpar sec describe --name my-secret
//! secpar sec create --name my-secret --secret '{"key":"value"}'
//! secpar sec create --name my-secret --secret '{"key":"value"}' --yes # skip confirmation
//! secpar sec delete --name my-secret
//! secpar sec delete # interactive selection + confirmation
//! secpar sec apply --path ./templates/secrets_template.yaml
//!
//! # Parameter Store
//! secpar par list
//! secpar par get --name /my/param
//! secpar par get # interactive selection
//! secpar par create --name /my/param --value secret-value
//! secpar par delete --name /my/param
//! secpar par delete # interactive selection + confirmation
//! secpar par apply --path ./templates/parameter_store_template.yaml
//!
//! # Region / profile override
//! secpar --region eu-west-1 --profile staging env
//! secpar --region eu-west-1 --profile staging sec list
//! ```
use Result;
/// CLI commands
/// a collection of custom errors
/// command line options
/// spec file
/// shared UX primitives (spinners, prompts, tables)
/// util methods
use crate;
/// The entry point of this CLI tool.
pub async