Documentation
¶
Overview ¶
Package exec provides an injectable interface and implementations for running commands. TODO: delete this package, use k8s.io/utils/exec instead. That package was copied here as a temporary workaround to make progress on b/80488884 (avoid the need to import exec first).
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ErrExecutableNotFound = osexec.ErrNotFound
ErrExecutableNotFound is returned if the executable is not found.
Functions ¶
This section is empty.
Types ¶
type Cmd ¶
type Cmd interface {
// Run runs the command to the completion.
Run() error
// CombinedOutput runs the command and returns its combined standard output
// and standard error. This follows the pattern of package os/exec.
CombinedOutput() ([]byte, error)
// Output runs the command and returns standard output, but not standard err
Output() ([]byte, error)
SetDir(dir string)
SetStdin(in io.Reader)
SetStdout(out io.Writer)
SetStderr(out io.Writer)
// Stops the command by sending SIGTERM. It is not guaranteed the
// process will stop before this function returns. If the process is not
// responding, an internal timer function will send a SIGKILL to force
// terminate after 10 seconds.
Stop()
}
Cmd is an interface that presents an API that is very similar to Cmd from os/exec. As more functionality is needed, this can grow. Since Cmd is a struct, we will have to replace fields with get/set method pairs.
type CodeExitError ¶
CodeExitError is an implementation of ExitError consisting of an error object and an exit code (the upper bits of os.exec.ExitStatus).
func (CodeExitError) Error ¶
func (e CodeExitError) Error() string
func (CodeExitError) ExitStatus ¶
func (e CodeExitError) ExitStatus() int
ExitStatus delegates to Code.
func (CodeExitError) String ¶
func (e CodeExitError) String() string
type ExitError ¶
ExitError is an interface that presents an API similar to os.ProcessState, which is what ExitError from os/exec is. This is designed to make testing a bit easier and probably loses some of the cross-platform properties of the underlying library.
type ExitErrorWrapper ¶
ExitErrorWrapper is an implementation of ExitError in terms of os/exec ExitError. Note: standard exec.ExitError is type *os.ProcessState, which already implements Exited().
func (ExitErrorWrapper) ExitStatus ¶
func (eew ExitErrorWrapper) ExitStatus() int
ExitStatus is part of the ExitError interface.
type Interface ¶
type Interface interface {
// Command returns a Cmd instance which can be used to run a single command.
// This follows the pattern of package os/exec.
Command(cmd string, args ...string) Cmd
// CommandContext returns a Cmd instance which can be used to run a single command.
//
// The provided context is used to kill the process if the context becomes done
// before the command completes on its own. For example, a timeout can be set in
// the context.
CommandContext(ctx context.Context, cmd string, args ...string) Cmd
// LookPath wraps os/exec.LookPath
LookPath(file string) (string, error)
}
Interface is an interface that presents a subset of the os/exec API. Use this when you want to inject fakeable/mockable exec behavior.
func New ¶
func New() Interface
New returns a new Interface which will os/exec to run commands.
Example ¶
package main
import (
"bytes"
"fmt"
"sigs.k8s.io/kustomize/pkg/exec"
)
func main() {
cmd := exec.New().Command("echo", "Bonjour!")
buff := bytes.Buffer{}
cmd.SetStdout(&buff)
if err := cmd.Run(); err != nil {
panic(err)
}
fmt.Println(buff.String())
}
Output: Bonjour!