ZIm/crates/schema_generator/src/main.rs
Peter Tripp 7a9e0b37ed
Improve schema_generator CLI (#25898)
Release Notes:

- N/A
2025-03-06 04:59:57 +00:00

36 lines
869 B
Rust

use anyhow::Result;
use clap::{Parser, ValueEnum};
use schemars::schema_for;
use theme::{IconThemeFamilyContent, ThemeFamilyContent};
#[derive(Parser, Debug)]
pub struct Args {
#[arg(value_enum)]
pub schema_type: SchemaType,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
#[clap(rename_all = "snake_case")]
pub enum SchemaType {
Theme,
IconTheme,
}
fn main() -> Result<()> {
env_logger::init();
let args = Args::parse();
match args.schema_type {
SchemaType::Theme => {
let schema = schema_for!(ThemeFamilyContent);
println!("{}", serde_json::to_string_pretty(&schema)?);
}
SchemaType::IconTheme => {
let schema = schema_for!(IconThemeFamilyContent);
println!("{}", serde_json::to_string_pretty(&schema)?);
}
}
Ok(())
}