use camino::Utf8PathBuf;
use clap::{Parser, Subcommand, ValueEnum};
use oranda::errors::Result;
#[derive(Debug, Subcommand)]
pub enum GenerateCommand {
Ci(Ci),
}
#[derive(Debug, Parser)]
pub struct Ci {
#[arg(long, default_value_t = CiType::Github)]
#[clap(value_enum)]
ci: CiType,
}
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, ValueEnum)]
pub enum CiType {
Github,
}
#[derive(Debug, Parser)]
pub struct Generate {
#[command(subcommand)]
kind: GenerateCommand,
#[arg(short, long)]
#[clap(global = true)]
output_path: Option<Utf8PathBuf>,
#[arg(short, long)]
#[clap(global = true)]
site_path: Option<Utf8PathBuf>,
}
impl Generate {
pub fn run(&self) -> Result<()> {
let path = self
.output_path
.clone()
.unwrap_or_else(|| self.default_path());
match self.kind {
GenerateCommand::Ci(_) => oranda::generate::generate_ci(path, &self.site_path)?,
};
Ok(())
}
fn default_path(&self) -> Utf8PathBuf {
match self.kind {
GenerateCommand::Ci(_) => Utf8PathBuf::from(".github/workflows/web.yml"),
}
}
}