mirror of
https://github.com/status-im/consul.git
synced 2025-01-12 06:44:41 +00:00
198ed6076d
* Clean up handling of subprocesses and make using a shell optional * Update docs for subprocess changes * Fix tests for new subprocess behavior * More cleanup of subprocesses * Minor adjustments and cleanup for subprocess logic * Makes the watch handler reload test use the new path. * Adds check tests for new args path, and updates existing tests to use new path. * Adds support for script args in Docker checks. * Fixes the sanitize unit test. * Adds panic for unknown watch type, and reverts back to Run(). * Adds shell option back to consul lock command. * Adds shell option back to consul exec command. * Adds shell back into consul watch command. * Refactors signal forwarding and makes Windows-friendly. * Adds a clarifying comment. * Changes error wording to a warning. * Scopes signals to interrupt and kill. This avoids us trying to send SIGCHILD to the dead process. * Adds an error for shell=false for consul exec. * Adds notes about the deprecated script and handler fields. * De-nests an if statement.
25 lines
464 B
Go
25 lines
464 B
Go
// +build windows
|
|
|
|
package agent
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
"syscall"
|
|
)
|
|
|
|
// ExecScript returns a command to execute a script through a shell.
|
|
func ExecScript(script string) (*exec.Cmd, error) {
|
|
shell := "cmd"
|
|
if other := os.Getenv("SHELL"); other != "" {
|
|
shell = other
|
|
}
|
|
script = "\"" + script + "\""
|
|
cmd := exec.Command(shell, "/C", script)
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{
|
|
CmdLine: strings.Join(cmd.Args, " "),
|
|
}
|
|
return cmd, nil
|
|
}
|