Fix bug in variables not executing if they were a command
This commit is contained in:
parent
4d840945eb
commit
5d9b7bac7a
3 changed files with 18 additions and 2 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -215,7 +215,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toke-runner"
|
name = "toke-runner"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"regex",
|
"regex",
|
||||||
|
|
|
@ -5,7 +5,7 @@ repository = "https://github.com/afonsofrancof/toke"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
keywords = ["cli", "toml", "command", "runner", "toke"]
|
keywords = ["cli", "toml", "command", "runner", "toke"]
|
||||||
categories = ["command-line-utilities", "development-tools"]
|
categories = ["command-line-utilities", "development-tools"]
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,22 @@ fn replace_variables(parsed_toml: &mut toml::Value, cli_vars: HashMap<String, St
|
||||||
merged_vars.insert(key.clone(), toml::Value::String(value.clone()));
|
merged_vars.insert(key.clone(), toml::Value::String(value.clone()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If a variable is a command, execute it and use the output as the variable value
|
||||||
|
for (_key, value) in merged_vars.iter_mut() {
|
||||||
|
if let Some(value_str) = value.as_str() {
|
||||||
|
if let Some(stripped_command) = value_str.strip_prefix('!') {
|
||||||
|
let output = Command::new("sh")
|
||||||
|
.arg("-c")
|
||||||
|
.arg(stripped_command)
|
||||||
|
.output()
|
||||||
|
.expect("Failed to execute shell command");
|
||||||
|
*value = toml::Value::String(
|
||||||
|
String::from_utf8_lossy(&output.stdout).trim().to_string(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Replace variables in the target's wildcards value
|
//Replace variables in the target's wildcards value
|
||||||
if let Some(wildcards_value) = target_table.get_mut("wildcards") {
|
if let Some(wildcards_value) = target_table.get_mut("wildcards") {
|
||||||
if let Some(wildcards_array) = wildcards_value.as_array_mut() {
|
if let Some(wildcards_array) = wildcards_value.as_array_mut() {
|
||||||
|
|
Loading…
Reference in a new issue