feat: with init publish
Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
parent
5561329510
commit
db6294c6d2
@ -22,7 +22,15 @@ struct Cli {
|
|||||||
#[derive(Subcommand, Clone)]
|
#[derive(Subcommand, Clone)]
|
||||||
enum Commands {
|
enum Commands {
|
||||||
Generate {},
|
Generate {},
|
||||||
Init {},
|
Init {
|
||||||
|
#[command(subcommand)]
|
||||||
|
commands: Option<InitCommands>,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subcommand, Clone)]
|
||||||
|
enum InitCommands {
|
||||||
|
Publish {},
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Args, Clone)]
|
#[derive(Args, Clone)]
|
||||||
@ -73,7 +81,60 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Commands::Init {} => {
|
Commands::Init {
|
||||||
|
commands: Some(commands),
|
||||||
|
} => match commands {
|
||||||
|
InitCommands::Publish {} => {
|
||||||
|
match config::get_file(&cli.global_args.crunch_file).await {
|
||||||
|
Err(_) => {
|
||||||
|
anyhow::bail!(
|
||||||
|
"config file not found: {}",
|
||||||
|
&cli.global_args
|
||||||
|
.crunch_file
|
||||||
|
.canonicalize()
|
||||||
|
.unwrap_or(cli.global_args.crunch_file)
|
||||||
|
.display()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Ok(mut config) => {
|
||||||
|
let schema_path = inquire::Text::new("schema_path")
|
||||||
|
.with_help_message(
|
||||||
|
"please select where you want your schema files to be placed",
|
||||||
|
)
|
||||||
|
.with_default("schemas/crunch")
|
||||||
|
.prompt()?;
|
||||||
|
let output_path = inquire::Text::new("output_path")
|
||||||
|
.with_help_message(
|
||||||
|
"please select where you want your generated files to be placed",
|
||||||
|
)
|
||||||
|
.with_default("src/gencrunch")
|
||||||
|
.prompt()?;
|
||||||
|
|
||||||
|
let config = config.add_publish(&schema_path, &output_path);
|
||||||
|
config.write_file(&cli.global_args.crunch_file).await?;
|
||||||
|
|
||||||
|
// TODO: add example schema
|
||||||
|
|
||||||
|
let output_path = if let Some(dir) = &cli.global_args.crunch_file.parent() {
|
||||||
|
if dir.display().to_string() == "" {
|
||||||
|
format!("{schema_path}")
|
||||||
|
} else {
|
||||||
|
format!(
|
||||||
|
"{}/{}",
|
||||||
|
dir.display().to_string().trim_end_matches("/"),
|
||||||
|
schema_path.trim_start_matches("/")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
format!("{schema_path}")
|
||||||
|
};
|
||||||
|
|
||||||
|
println!("Success: added publish, check schema at: {output_path}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Commands::Init { commands: None } => {
|
||||||
match config::get_file(&cli.global_args.crunch_file).await {
|
match config::get_file(&cli.global_args.crunch_file).await {
|
||||||
Ok(_) => anyhow::bail!("config file already exists"),
|
Ok(_) => anyhow::bail!("config file already exists"),
|
||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
|
Loading…
Reference in New Issue
Block a user