use std::path::PathBuf;
use clap::Subcommand;
#[derive(Subcommand)]
pub enum Command {
Encrypt {
#[clap(long, env = "C4GH_SECRET_KEY")]
sk: Option<PathBuf>,
#[clap(long = "recipient_pk", multiple_values = true)]
recipient_pk: Vec<PathBuf>,
#[clap(long)]
range: Option<String>,
},
Decrypt {
#[clap(long, env = "C4GH_SECRET_KEY")]
sk: Option<PathBuf>,
#[clap(long)]
sender_pk: Option<PathBuf>,
#[clap(long)]
range: Option<String>,
},
Rearrange {
#[clap(long, env = "C4GH_SECRET_KEY")]
sk: Option<PathBuf>,
#[clap(long)]
range: Option<String>,
},
Reencrypt {
#[clap(long, env = "C4GH_SECRET_KEY")]
sk: Option<PathBuf>,
#[clap(long = "recipient_pk", multiple_values = true)]
recipient_pk: Vec<PathBuf>,
#[clap(short, long)]
trim: bool,
},
Keygen {
#[clap(long, env, default_value = "~/.c4gh/key")]
sk: PathBuf,
#[clap(long, env, default_value = "~/.c4gh/key.pub")]
pk: PathBuf,
#[clap(short, long)]
comment: Option<String>,
#[clap(long)]
nocrypt: bool,
#[clap(short, long)]
force: bool,
},
}
#[derive(clap::Parser)]
#[clap(about, version, author)]
pub struct Args {
#[clap(short, long)]
pub verbose: bool,
#[clap(subcommand)]
pub subcommand: Command,
}