cli/scriptengine/
generic_script.rs1#[cfg(test)]
7#[path = "generic_script_test.rs"]
8mod generic_script_test;
9
10use crate::command;
11use crate::error::CargoMakeError;
12use crate::io::delete_file;
13use crate::scriptengine::script_utils::create_script_file;
14
15fn run_file(
16 file: &str,
17 runner: &String,
18 arguments: Option<Vec<String>>,
19 cli_arguments: &mut Vec<String>,
20) -> Result<bool, CargoMakeError> {
21 let mut args = match arguments {
22 Some(values) => values,
23 None => vec![],
24 };
25
26 args.push(file.to_string());
27
28 args.append(cli_arguments);
29
30 let exit_code = command::run_command(runner, &Some(args), false)?;
31 debug!("Executed script, exit code: {}", exit_code);
32
33 Ok(exit_code == 0)
34}
35
36pub(crate) fn execute(
37 script_text: &Vec<String>,
38 runner: String,
39 extension: String,
40 arguments: Option<Vec<String>>,
41 cli_arguments: &Vec<String>,
42 validate: bool,
43) -> Result<bool, CargoMakeError> {
44 let file = create_script_file(script_text, &extension)?;
45
46 let valid = run_file(&file, &runner, arguments, &mut cli_arguments.clone())?;
47
48 delete_file(&file);
49
50 if validate && !valid {
51 error!("Unable to execute script.");
52 }
53
54 Ok(valid)
55}