This commit is contained in:
parent
b92c2625c2
commit
aa231276af
3 changed files with 17 additions and 5 deletions
|
@ -8,6 +8,7 @@ pub fn get_args() -> clap::ArgMatches {
|
||||||
.about("Bootstrap a new repository from base repository")
|
.about("Bootstrap a new repository from base repository")
|
||||||
.arg(arg!(<BASE> "Base repository").required(true))
|
.arg(arg!(<BASE> "Base repository").required(true))
|
||||||
.arg(arg!(<NEW> "Repository name").required(true))
|
.arg(arg!(<NEW> "Repository name").required(true))
|
||||||
|
.arg(arg!(--verify "Verify scripts before running them"))
|
||||||
.alias("bs"),
|
.alias("bs"),
|
||||||
)
|
)
|
||||||
.subcommand(
|
.subcommand(
|
||||||
|
|
|
@ -152,8 +152,18 @@ pub fn build_script_vars(expose: Option<Vec<String>>, vars: &[AskValue]) -> Stri
|
||||||
String::new()
|
String::new()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn do_script(action: &ScriptAction, vars: &[AskValue], name: &str) {
|
pub fn do_script(action: &ScriptAction, vars: &[AskValue], name: &str, verify: bool) {
|
||||||
let pre = build_script_vars(action.expose.clone(), &vars);
|
let pre = build_script_vars(action.expose.clone(), &vars);
|
||||||
|
|
||||||
|
if verify {
|
||||||
|
let script =
|
||||||
|
std::fs::read_to_string(std::path::Path::new(name).join(&action.script)).unwrap();
|
||||||
|
println!("Running script:\n{pre}\n{script}");
|
||||||
|
if !inquire::prompt_confirmation("Run this script?").unwrap() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
println!("Running script '{}'", action.script);
|
println!("Running script '{}'", action.script);
|
||||||
Exec::cmd("sh")
|
Exec::cmd("sh")
|
||||||
.arg("-c")
|
.arg("-c")
|
||||||
|
@ -187,7 +197,7 @@ pub fn do_replace(action: &ReplaceAction, name: &str, vars: &[AskValue]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Bootstrap a git repository using a base template
|
/// Bootstrap a git repository using a base template
|
||||||
pub fn bootstrap(base: &str, name: &str) {
|
pub fn bootstrap(base: &str, name: &str, verify: bool) {
|
||||||
Exec::cmd("git")
|
Exec::cmd("git")
|
||||||
.arg("clone")
|
.arg("clone")
|
||||||
.arg(base)
|
.arg(base)
|
||||||
|
@ -281,10 +291,10 @@ pub fn bootstrap(base: &str, name: &str) {
|
||||||
};
|
};
|
||||||
|
|
||||||
if eval(&when, &vars) {
|
if eval(&when, &vars) {
|
||||||
do_script(&action, &vars, name);
|
do_script(&action, &vars, name, verify);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
do_script(&action, &vars, name);
|
do_script(&action, &vars, name, verify);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,8 @@ fn main() {
|
||||||
Some(("bootstrap", bs_args)) => {
|
Some(("bootstrap", bs_args)) => {
|
||||||
let base = bs_args.get_one::<String>("BASE").unwrap();
|
let base = bs_args.get_one::<String>("BASE").unwrap();
|
||||||
let repo = bs_args.get_one::<String>("NEW").unwrap();
|
let repo = bs_args.get_one::<String>("NEW").unwrap();
|
||||||
bootstrap(base, repo);
|
let verify = bs_args.get_flag("verify");
|
||||||
|
bootstrap(base, repo, verify);
|
||||||
}
|
}
|
||||||
Some(("new", new_args)) => {
|
Some(("new", new_args)) => {
|
||||||
let branch: &String = new_args.get_one("BRANCH").unwrap();
|
let branch: &String = new_args.get_one("BRANCH").unwrap();
|
||||||
|
|
Loading…
Add table
Reference in a new issue