use std::path::PathBuf;
use clap::Parser;
#[derive(Parser)]
#[clap(version, about)]
pub struct Options {
#[clap(long)]
pub config_dir: Option<PathBuf>,
#[clap(long)]
pub recipe_dir: Option<PathBuf>,
#[clap(subcommand)]
pub subcommand: SubCommand,
}
#[derive(Parser)]
pub enum SubCommand {
Build(Build),
#[clap(name = "new")]
Create(Create),
Delete(Delete),
Edit(Edit),
Info,
List(List),
}
#[derive(Default, Parser)]
pub struct Build {
#[clap(long = "template", value_name = "NAME", default_value = "html")]
pub template_name: String,
#[clap(long, value_name = "DIR")]
pub template_dir: Option<PathBuf>,
pub output_dir: PathBuf,
}
#[derive(Default, Parser)]
pub struct Create {
#[clap(long = "image", value_name = "FILE")]
pub image_path: Option<PathBuf>,
pub title: Option<String>,
}
#[derive(Default, Parser)]
pub struct Delete {
pub title: String,
}
#[derive(Default, Parser)]
pub struct Edit {
#[clap(long = "set-image", value_name = "FILE")]
pub image_path: Option<PathBuf>,
pub title: String,
}
#[derive(Default, Parser)]
pub struct List {
#[clap(long = "files")]
pub list_files: bool,
#[clap(long)]
pub tags: Option<Vec<String>>,
}
#[derive(Default, Parser)]
pub struct Info;