#[derive(Clone, Default, Debug, clap::ValueEnum)]
pub enum FsWriteFormat {
#[default]
Md,
Xml,
Json,
}
impl FsWriteFormat {
pub fn extension(&self) -> &'static str {
match self {
FsWriteFormat::Md => "md",
FsWriteFormat::Xml => "xml",
FsWriteFormat::Json => "json",
}
}
}
#[derive(Clone, Debug, clap::Args)]
pub struct FsFmtOpts {
#[arg(short = 'f', long, value_enum, default_value_t = FsWriteFormat::Md)]
pub format: FsWriteFormat,
#[arg(short = 'p', long, default_value_t = false)]
pub show_permissions: bool,
#[arg(short = 's', long, default_value_t = false)]
pub show_size: bool,
#[arg(short = 'm', long, default_value_t = false)]
pub show_modified: bool,
#[arg(skip)]
pub omit_file_contents: bool,
#[arg(short = 't', long, default_value_t = false)]
pub include_tree_outline: bool,
#[arg(long, default_value_t = false)]
pub parsable_format: bool,
#[arg(long, default_value_t = false)]
pub omit_summary: bool,
#[arg(short = 'l', long, default_value_t = false)]
pub include_source_details: bool,
}
impl Default for FsFmtOpts {
fn default() -> Self {
FsFmtOpts {
format: FsWriteFormat::default(),
show_permissions: false,
show_size: true,
show_modified: true,
omit_file_contents: false,
include_tree_outline: true,
parsable_format: false,
omit_summary: false,
include_source_details: true,
}
}
}