main.rs

 1mod cli;
 2
 3use std::path::PathBuf;
 4
 5use anyhow::Result;
 6use clap::Parser;
 7use schemars::schema_for;
 8use theme::Theme;
 9
10fn build_themes(out_dir: PathBuf, file_name: PathBuf) -> Result<()> {
11    let theme = schema_for!(Theme);
12    let output = serde_json::to_string_pretty(&theme)?;
13
14    std::fs::create_dir(&out_dir)?;
15
16    let mut file_path = out_dir;
17    file_path.push(file_name);
18
19    std::fs::write(file_path, output)?;
20
21    Ok(())
22}
23
24fn main() -> Result<()> {
25    let args = cli::Cli::parse();
26    match args.command {
27        cli::Commands::BuildThemeTypes { out_dir, file_name } => build_themes(out_dir, file_name),
28    }
29}