use clap::{Parser, Subcommand};
use miette::Result;
use super::Context;
#[derive(Debug, Clone, Parser)]
pub struct CryptoArgs {
#[command(subcommand)]
pub action: Action,
}
super::subcommands! {
[CryptoArgs => |args: CryptoArgs, mut ctx: Context| -> Result<(Action, Context)> {
let action = args.action.clone();
ctx.provide(args);
Ok((action, ctx))
}]
decrypt => Decrypt(DecryptArgs),
encrypt => Encrypt(EncryptArgs),
hash => Hash(HashArgs),
keygen => Keygen(KeygenArgs),
protect => Protect(ProtectArgs),
reveal => Reveal(RevealArgs)
}