use anyhow::Result;
use clap::{Parser, Subcommand};
use std::path::PathBuf;
#[derive(Parser)]
#[command(name = "nautilus-codegen")]
#[command(about = "Nautilus Schema Codegen Tool", long_about = None)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Generate {
#[arg(short, long, value_name = "FILE")]
schema: Option<PathBuf>,
#[arg(long)]
no_install: bool,
#[arg(short, long)]
verbose: bool,
#[arg(long)]
standalone: bool,
},
Validate {
#[arg(short, long, value_name = "FILE")]
schema: Option<PathBuf>,
},
}
fn main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Commands::Generate {
schema,
no_install,
verbose,
standalone,
} => {
let path = nautilus_codegen::resolve_schema_path(schema)?;
nautilus_codegen::generate_command(
&path,
nautilus_codegen::GenerateOptions {
install: !no_install,
verbose,
standalone,
},
)
}
Commands::Validate { schema } => {
let path = nautilus_codegen::resolve_schema_path(schema)?;
nautilus_codegen::validate_command(&path)
}
}
}