ansible_inventory_cloud_cli/
args.rs

1use clap::{Parser, Subcommand, ValueEnum};
2use url::Url;
3
4//
5#[derive(Parser, Debug)]
6#[command(author, version, about, long_about = None)]
7pub struct Args {
8    #[command(subcommand)]
9    pub subcommand: ArgsSubcommand,
10}
11
12#[derive(Subcommand, Debug)]
13pub enum ArgsSubcommand {
14    Http(HttpArgs),
15}
16
17//
18#[derive(Parser, Debug)]
19#[command(author, version, about, long_about = None)]
20pub struct HttpArgs {
21    #[clap(flatten)]
22    pub _common: XArgsCommon,
23
24    #[arg(long)]
25    pub list_url: Option<Url>,
26    #[arg(long)]
27    pub host_url: Option<Url>,
28
29    #[arg(long)]
30    pub access_token: String,
31    #[arg(long, value_enum)]
32    pub access_token_in: Option<HttpArgsAccessTokenIn>,
33    #[arg(long)]
34    pub access_token_query_name: Option<String>,
35
36    #[arg(long, value_enum)]
37    pub hostname_in: Option<HttpArgsHostnameIn>,
38    #[arg(long)]
39    pub hostname_query_name: Option<String>,
40}
41
42//
43// https://docs.ansible.com/ansible/latest/cli/ansible-inventory.html
44#[derive(Parser, Debug)]
45#[command(author, version, about, long_about = None)]
46pub struct XArgsCommon {
47    #[arg(long)]
48    pub list: bool,
49    #[arg(long)]
50    pub host: Option<String>,
51}
52
53//
54#[derive(ValueEnum, Debug, Clone)]
55pub enum HttpArgsAccessTokenIn {
56    HeaderAuthorizationBearer,
57    Query,
58}
59impl Default for HttpArgsAccessTokenIn {
60    fn default() -> Self {
61        Self::HeaderAuthorizationBearer
62    }
63}
64
65//
66#[derive(ValueEnum, Debug, Clone)]
67pub enum HttpArgsHostnameIn {
68    Path,
69    Query,
70}
71impl Default for HttpArgsHostnameIn {
72    fn default() -> Self {
73        Self::Path
74    }
75}