task: Spawn static tasks in separate shell (#8827)
That way one can use environment variables in task definitions. Fixes: #8660 /cc @SomeoneToIgnore it looks like we don't ever set `separate_shell` to false anymore, it might be worth streamlining? Release Notes: - Fixed static tasks not being run under a separate shell. - Removed `separate_shell` setting from task definitions. It is now a default for tasks defined in tasks.json file.
This commit is contained in:
parent
6121c286b7
commit
98a1e87fbe
4 changed files with 17 additions and 19 deletions
|
@ -303,23 +303,25 @@ impl TerminalPanel {
|
|||
args: spawn_in_terminal.args.clone(),
|
||||
env: spawn_in_terminal.env.clone(),
|
||||
};
|
||||
if spawn_in_terminal.separate_shell {
|
||||
let Some((shell, mut user_args)) = (match TerminalSettings::get_global(cx).shell.clone()
|
||||
{
|
||||
Shell::System => std::env::var("SHELL").ok().map(|shell| (shell, vec![])),
|
||||
Shell::Program(shell) => Some((shell, vec![])),
|
||||
Shell::WithArguments { program, args } => Some((program, args)),
|
||||
}) else {
|
||||
return;
|
||||
};
|
||||
// Set up shell args unconditionally, as tasks are always spawned inside of a shell.
|
||||
let Some((shell, mut user_args)) = (match TerminalSettings::get_global(cx).shell.clone() {
|
||||
Shell::System => std::env::var("SHELL").ok().map(|shell| (shell, vec![])),
|
||||
Shell::Program(shell) => Some((shell, vec![])),
|
||||
Shell::WithArguments { program, args } => Some((program, args)),
|
||||
}) else {
|
||||
return;
|
||||
};
|
||||
|
||||
let command = std::mem::take(&mut spawn_task.command);
|
||||
let args = std::mem::take(&mut spawn_task.args);
|
||||
spawn_task.command = shell;
|
||||
user_args.extend(["-i".to_owned(), "-c".to_owned(), command]);
|
||||
user_args.extend(args);
|
||||
spawn_task.args = user_args;
|
||||
let mut command = std::mem::take(&mut spawn_task.command);
|
||||
let args = std::mem::take(&mut spawn_task.args);
|
||||
for arg in args {
|
||||
command.push(' ');
|
||||
command.push_str(&arg);
|
||||
}
|
||||
spawn_task.command = shell;
|
||||
user_args.extend(["-i".to_owned(), "-c".to_owned(), command]);
|
||||
spawn_task.args = user_args;
|
||||
|
||||
let working_directory = spawn_in_terminal.cwd.clone();
|
||||
let allow_concurrent_runs = spawn_in_terminal.allow_concurrent_runs;
|
||||
let use_new_terminal = spawn_in_terminal.use_new_terminal;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue