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}