b554a0dd86
/cc @mwhooker - I changed the interface up a bit to return an error, since things should return errors in Go (the ui.Error bit was kind of ghetto because it had no way to bubble that error up except through the UI). Using this, I made it so that the communicator uses both a CommandWrapper and ShellCommand with chroot so that the chroot commannd is also wrapped (it wasn't before). I think the functionality of all this is the same but I'd love if you could look it over and make sure.
16 lines
432 B
Go
16 lines
432 B
Go
package chroot
|
|
|
|
import (
|
|
"os/exec"
|
|
)
|
|
|
|
// CommandWrapper is a type that given a command, will possibly modify that
|
|
// command in-flight. This might return an error.
|
|
type CommandWrapper func(string) (string, error)
|
|
|
|
// ShellCommand takes a command string and returns an *exec.Cmd to execute
|
|
// it within the context of a shell (/bin/sh).
|
|
func ShellCommand(command string) *exec.Cmd {
|
|
return exec.Command("/bin/sh", "-c", command)
|
|
}
|