use std::path::PathBuf;
use clap::Args;
use crate::cli::ENV_PATH_SEP;
use crate::error::{IOResultExt, Result};
use crate::{load_identities, stdout_or_file};
#[derive(Args, Debug)]
pub struct PubkeyArgs {
#[clap(name = "KEY_FILE", env = "YAGE_KEY_FILE", value_delimiter = ENV_PATH_SEP)]
pub key_files: Vec<PathBuf>,
#[clap(short, long = "key", value_name = "KEY", env = "YAGE_KEY", value_delimiter = ',')]
pub keys: Vec<String>,
#[clap(short, long, default_value = "-", value_name = "FILE")]
pub output: PathBuf,
}
pub fn pubkey(args: &PubkeyArgs) -> Result<i32> {
let keys = load_identities(&args.keys, &args.key_files)?;
let mut output = stdout_or_file(&args.output)?;
for key in keys {
writeln!(output, "{}", key.to_public()).path_ctx(&args.output)?;
}
Ok(0)
}