Slight code cleanup in generate_env
This commit is contained in:
parent
3bb576edde
commit
0fd5a9d995
|
@ -136,31 +136,31 @@ Vector<String> generate_env(StringView cmdline, const Context& context, const Sh
|
||||||
{
|
{
|
||||||
static const Regex re(R"(\bkak_(quoted_)?(\w+)\b)");
|
static const Regex re(R"(\bkak_(quoted_)?(\w+)\b)");
|
||||||
|
|
||||||
Vector<String> kak_env;
|
Vector<String> env;
|
||||||
for (auto&& match : RegexIterator{cmdline.begin(), cmdline.end(), re})
|
for (auto&& match : RegexIterator{cmdline.begin(), cmdline.end(), re})
|
||||||
{
|
{
|
||||||
StringView name{match[2].first, match[2].second};
|
StringView name{match[2].first, match[2].second};
|
||||||
Quoting quoting = match[1].matched ? Quoting::Shell : Quoting::Raw;
|
|
||||||
|
|
||||||
auto match_name = [&](const String& s) {
|
auto match_name = [&](const String& s) {
|
||||||
return s.substr(0_byte, name.length()) == name and
|
return s.substr(0_byte, name.length()) == name and
|
||||||
s.substr(name.length(), 1_byte) == "=";
|
s.substr(name.length(), 1_byte) == "=";
|
||||||
};
|
};
|
||||||
if (any_of(kak_env, match_name))
|
if (any_of(env, match_name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto var_it = shell_context.env_vars.find(name);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Quoting quoting = match[1].matched ? Quoting::Shell : Quoting::Raw;
|
||||||
|
auto var_it = shell_context.env_vars.find(name);
|
||||||
String value = var_it != shell_context.env_vars.end() ?
|
String value = var_it != shell_context.env_vars.end() ?
|
||||||
var_it->value : join(ShellManager::instance().get_val(name, context) | transform(quoter(quoting)), ' ', false);
|
var_it->value : join(ShellManager::instance().get_val(name, context) | transform(quoter(quoting)), ' ', false);
|
||||||
|
|
||||||
StringView quoted{match[1].first, match[1].second};
|
StringView quoted{match[1].first, match[1].second};
|
||||||
kak_env.push_back(format("kak_{}{}={}", quoted, name, value));
|
env.push_back(format("kak_{}{}={}", quoted, name, value));
|
||||||
} catch (runtime_error&) {}
|
} catch (runtime_error&) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
return kak_env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user