use clap::{Args, Parser, Subcommand};
#[derive(Parser)]
#[clap(name = "mycli")]
pub struct Cli {
#[clap(long, short, global = true, default_value_t = false)]
pub quiet: bool,
#[clap(long, global = true, default_value_t = false)]
pub no_retry: bool,
#[clap(long, global = true, required = false)]
pub max_wait: Option<u64>,
#[clap(long, global = true, required = false)]
pub max_retries: Option<usize>,
#[structopt(subcommand)]
pub command: Command,
}
#[derive(Subcommand)]
pub enum Command {
#[clap(name = "account")]
Account(Account),
#[clap(name = "domain")]
Domain(Domain),
#[clap(name = "rrset")]
ResourceRecordSet(ResourceRecordSet),
#[clap(name = "token")]
Token(Token),
#[clap(name = "policy")]
TokenPolicy(TokenPolicy),
}
#[derive(Parser)]
pub struct Account {
#[structopt(subcommand)]
pub command: AccountCommand,
}
#[derive(Parser)]
pub struct Domain {
#[structopt(subcommand)]
pub command: DomainCommand,
}
#[derive(Parser)]
pub struct ResourceRecordSet {
#[structopt(subcommand)]
pub command: ResourceRecordSetCommand,
}
#[derive(Parser)]
pub struct Token {
#[structopt(subcommand)]
pub command: TokenCommand,
}
#[derive(Parser)]
pub struct TokenPolicy {
#[structopt(subcommand)]
pub command: TokenPolicyCommand,
}
#[derive(Subcommand, Clone)]
pub enum AccountCommand {
Show,
Captcha,
Register(RegisterArgs),
Login(LoginArgs),
}
#[derive(Subcommand, Clone)]
pub enum DomainCommand {
Get(DomainNameArg),
List,
Create(DomainNameArg),
Delete(DomainNameArg),
Responsible(DomainNameArg),
Export(DomainNameArg),
}
#[derive(Subcommand, Clone)]
pub enum ResourceRecordSetCommand {
Get(ResourceRecordSetGetArgs),
List(ResourceRecordSetListArgs),
Create(ResourceRecordSetCreateArgs),
Delete(ResourceRecordSetDeleteArgs),
}
#[derive(Subcommand, Clone)]
pub enum TokenCommand {
List,
Get(TokenIdArgs),
Create(TokenCreateArgs),
Delete(TokenIdArgs),
Patch(TokenPatchArgs),
}
#[derive(Subcommand, Clone)]
pub enum TokenPolicyCommand {
List(TokenPolicyListArgs),
Get(TokenPolicyGetArgs),
Create(TokenPolicyCreateArgs),
Delete(TokenPolicyDeleteArgs),
Patch(TokenPolicyPatchArgs),
}
#[derive(Args, Clone)]
pub struct DomainNameArg {
pub name: String,
}
#[derive(Args, Clone)]
pub struct RegisterArgs {
#[clap(index = 1)]
pub email: String,
#[clap(index = 2)]
pub password: String,
#[clap(index = 3)]
pub id: String,
#[clap(index = 4)]
pub solution: String,
#[clap(index = 5)]
pub domain: Option<String>,
}
#[derive(Args, Clone)]
pub struct LoginArgs {
#[clap(index = 1)]
pub email: String,
#[clap(index = 2)]
pub password: String,
}
#[derive(Args, Clone)]
pub struct ResourceRecordSetGetArgs {
#[clap(index = 1)]
pub name: String,
#[clap(index = 2)]
pub subname: String,
#[clap(index = 3)]
pub r#type: String,
}
#[derive(Args, Clone)]
pub struct ResourceRecordSetListArgs {
#[clap(index = 1)]
pub name: String,
}
#[derive(Args, Clone)]
pub struct ResourceRecordSetCreateArgs {
#[clap(index = 1)]
pub name: String,
#[clap(index = 2)]
pub subname: String,
#[clap(index = 3)]
pub r#type: String,
#[clap(index = 4)]
pub ttl: u64,
#[clap(index = 5)]
pub records: Vec<String>,
}
#[derive(Args, Clone)]
pub struct ResourceRecordSetDeleteArgs {
#[clap(index = 1)]
pub name: String,
#[clap(index = 2)]
pub subname: String,
#[clap(index = 3)]
pub r#type: String,
}
#[derive(Args, Clone)]
pub struct TokenIdArgs {
pub token_id: String,
}
#[derive(Args, Clone)]
pub struct TokenCreateArgs {
#[clap(long)]
pub name: Option<String>,
#[clap(long)]
#[arg(num_args(0..))]
pub subnets: Option<Vec<String>>,
#[clap(long)]
pub manage: Option<bool>,
#[clap(long)]
pub max_age: Option<String>,
#[clap(long)]
pub max_unused_period: Option<String>,
}
#[derive(Args, Clone)]
pub struct TokenPatchArgs {
#[clap(long)]
pub token_id: String,
#[clap(long)]
pub name: Option<String>,
#[clap(long)]
#[arg(num_args(0..))]
pub subnets: Option<Vec<String>>,
#[clap(long)]
pub manage: Option<bool>,
#[clap(long)]
pub max_age: Option<String>,
#[clap(long)]
pub max_unused_period: Option<String>,
}
#[derive(Args, Clone)]
pub struct TokenPolicyListArgs {
pub token_id: String,
}
#[derive(Args, Clone)]
pub struct TokenPolicyGetArgs {
pub token_id: String,
pub policy_id: String,
}
#[derive(Args, Clone)]
pub struct TokenPolicyDeleteArgs {
pub token_id: String,
pub policy_id: String,
}
#[derive(Args, Clone)]
pub struct TokenPolicyCreateArgs {
pub token_id: String,
pub domain: Option<String>,
pub subname: Option<String>,
pub r#type: Option<String>,
pub perm_write: Option<bool>,
}
#[derive(Args, Clone)]
pub struct TokenPolicyPatchArgs {
pub token_id: String,
pub policy_id: String,
pub domain: Option<String>,
pub subname: Option<String>,
pub r#type: Option<String>,
pub perm_write: Option<bool>,
}