Mini Example
In cargo-generate.toml
write a [hooks]
section:
[template]
cargo_generate_version = "0.10.0"
[hooks]
#init = [...]
pre = ["pre-script.rhai"]
#post = [...]
[placeholders]
license = { type = "string", prompt = "What license to use?", choices = ["APACHE", "MIT"], default = "MIT" }
Now, write the script in Rhai
, utilizing the cargo-generate
provided extensions:
// we can see existing variables.
// note that template and Rhai variables are separate!
let crate_type = variable::get("crate_type")
debug(`crate_type: ${crate_type}`);
let license = variable::get("license").to_upper();
while switch license {
"APACHE" => {
file::delete("LICENSE-MIT");
file::rename("LICENSE-APACHE", "LICENSE");
false
}
"MIT" => {
file::delete("LICENSE-APACHE");
file::rename("LICENSE-MIT", "LICENSE");
false
}
_ => true,
} {
license = variable::prompt("Select license?", "MIT", [
"APACHE",
"MIT",
]);
}
variable::set("license", license);