use clap::{Parser, Subcommand, ValueEnum};
use std::path::PathBuf;
use nils_common::cli_contract::OutputFormat;
#[derive(Debug, Parser)]
#[command(
name = "md-render",
version,
long_version = nils_build_info::long_version(env!("CARGO_PKG_VERSION")),
about,
long_about = None
)]
pub struct Cli {
#[arg(long, global = true, value_enum)]
pub format: Option<OutputFormat>,
#[command(subcommand)]
pub command: Option<Command>,
#[command(flatten)]
pub default_render: RenderArgs,
}
#[derive(Debug, Subcommand)]
pub enum Command {
Render(RenderArgs),
Completion {
#[arg(value_enum)]
shell: CompletionShell,
},
}
#[derive(Debug, Clone, clap::Args)]
pub struct RenderArgs {
#[arg(long, value_hint = clap::ValueHint::FilePath)]
pub template: Option<PathBuf>,
#[arg(long, value_hint = clap::ValueHint::FilePath)]
pub data: Option<PathBuf>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum CompletionShell {
Bash,
Zsh,
}