Files
runrs/src/template.rs
2025-01-18 14:28:43 +08:00

40 lines
1.3 KiB
Rust

use std::fs;
use std::os::unix::fs::PermissionsExt;
pub fn print_template(output: &Option<String>) {
let script = get_script_template();
match output {
None => {
println!("{}", script);
}
Some(output_file) => {
if fs::metadata(output_file).is_ok() {
failure!("Output script file exists: {}", output_file);
} else {
match fs::write(output_file, script) {
Ok(_) => {
success!("Write script file success: {}", output_file);
let _ = fs::set_permissions(output_file, PermissionsExt::from_mode(0o755));
}
Err(e) => {
failure!("Write script file: {}, failed: {}", output_file, e);
}
}
}
}
}
}
#[allow(unreachable_code)]
fn get_script_template() -> &'static str {
#[cfg(feature = "switch-rust-lang")]
return include_str!("script.template.rs");
#[cfg(feature = "switch-go-lang")]
return include_str!("script.template.go");
#[cfg(feature = "switch-ts-lang")]
return include_str!("script.template.ts");
#[cfg(feature = "switch-dart-lang")]
return include_str!("script.template.dart");
panic!("Unknown feature assigned.");
}