use std::path::Path;
use trixy::macros::config::trixy::TrixyConfig;
use crate::cli::{GenCommand, Language};
pub fn handle(
gen_command: GenCommand,
_language: Language,
api_file: &Path,
write_files: bool,
vendored: bool,
) -> anyhow::Result<()> {
let base_config = TrixyConfig::new("callback_function")
.trixy_path(api_file.to_owned())
.dist_dir_path("include")
.out_dir_path("");
let final_config: TrixyConfig;
match gen_command {
GenCommand::Host => {
final_config = base_config
.generate_auxiliary(false)
.generate_host(true)
.add_c_headers(vendored);
}
GenCommand::Auxiliary => {
final_config = base_config
.generate_auxiliary(true)
.generate_host(false)
.add_c_headers(vendored);
}
GenCommand::All {} => {
final_config = base_config
.generate_auxiliary(true)
.generate_host(true)
.add_c_headers(vendored);
}
}
let file_tree = final_config.generate();
if write_files {
file_tree.materialize()?;
} else {
println!("{}", file_tree);
}
Ok(())
}