36 lines
869 B
Rust
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(())
|
|
}
|