use clap::Args;
use super::{GeneratorOptions, PrivateOptions};
#[derive(Debug, Args, Clone, Default)]
pub struct OutputOptions {
#[command(flatten)]
pub private: PrivateOutputArgs,
#[command(flatten)]
pub generator: GeneratorOutputArgs,
}
impl OutputOptions {
pub fn new(private: PrivateOptions, generator: GeneratorOptions) -> Self {
Self {
private: PrivateOutputArgs { private },
generator: GeneratorOutputArgs { generator },
}
}
pub fn private_opts(&self) -> PrivateOptions { self.private.private }
pub fn generator_opts(&self) -> GeneratorOptions {
self.generator.generator
}
pub fn needs_encryption(&self) -> bool {
self.private.private.is_encrypt()
|| self.generator.generator.is_encrypt()
}
}
#[derive(Debug, Args, Clone, Default)]
pub struct PrivateOutputArgs {
#[arg(long = "private", default_value = "include")]
pub private: PrivateOptions,
}
#[derive(Debug, Args, Clone, Default)]
pub struct GeneratorOutputArgs {
#[arg(long = "generator", default_value = "include")]
pub generator: GeneratorOptions,
}
pub trait HasOutputOptions {
fn output_options(&self) -> &OutputOptions;
}