summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-09-09 17:10:53 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-09-09 17:10:53 +0200
commitae76b7dddc2973b809109329aabf15fdd676b7d6 (patch)
tree0ad185f833f8efaa8a0c72b75248a9e8882b9863 /src/command_manager.cc
parent46565723b1f146af461f93dd45a9c25d43ac553d (diff)
Add support for shell script parameters
Now %sh{ ... } can access positional parameters through standard shell construct, allowing simple handling of variable parameters. def command accepts -shell-params flag to use this facility.
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index 1110583f..df23ca6e 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -211,6 +211,7 @@ void CommandManager::execute_single_command(const CommandParameters& params,
void CommandManager::execute(const String& command_line,
Context& context,
+ const memoryview<String>& shell_params,
const EnvVarMap& env_vars)
{
TokenList tokens = parse(command_line);
@@ -223,7 +224,8 @@ void CommandManager::execute(const String& command_line,
if (it->type() == Token::Type::ShellExpand)
{
String output = ShellManager::instance().eval(it->content(),
- context, env_vars);
+ context, shell_params,
+ env_vars);
TokenList shell_tokens = parse(output);
it = tokens.erase(it);
for (auto& token : shell_tokens)