exec

package
v0.0.0-...-0d7ca9c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2024 License: Apache-2.0 Imports: 9 Imported by: 26

Documentation

Overview

Package exec contains an interface for executing commands, along with helpers TODO(bentheelder): add standardized timeout functionality & a default timeout so that commands cannot hang indefinitely (!)

Index

Constants

This section is empty.

Variables

View Source
var DefaultCmder = &LocalCmder{}

DefaultCmder is a LocalCmder instance used for convenience, packages originally using os/exec.Command can instead use pkg/kind/exec.Command which forwards to this instance TODO(bentheelder): swap this for testing TODO(bentheelder): consider not using a global for this :^)

Functions

func CombinedOutputLines

func CombinedOutputLines(cmd Cmd) (lines []string, err error)

CombinedOutputLines is like os/exec's cmd.CombinedOutput(), but over our Cmd interface, and instead of returning the byte buffer of stderr + stdout, it scans these for lines and returns a slice of output lines

func InheritOutput

func InheritOutput(cmd Cmd)

InheritOutput sets cmd's output to write to the current process's stdout and stderr

func NoOutput

func NoOutput(cmd Cmd)

NoOutput ignores all output from the command.

func Output

func Output(cmd Cmd) ([]byte, error)

Output is for compatibility with cmd.Output.

func OutputLines

func OutputLines(cmd Cmd) (lines []string, err error)

OutputLines is like os/exec's cmd.Output(), but over our Cmd interface, and instead of returning the byte buffer of stdout, it scans it for lines and returns a slice of output lines

func SetOutput

func SetOutput(cmd Cmd, stdoutWriter, stderrWriter io.Writer)

SetOutput sets cmd's output to write to the given Writer.

Types

type Cmd

type Cmd interface {
	Run() error
	// Each entry should be of the form "key=value"
	SetEnv(...string) Cmd
	SetStdin(io.Reader) Cmd
	SetStdout(io.Writer) Cmd
	SetStderr(io.Writer) Cmd
	SetDir(string) Cmd
}

Cmd abstracts over running a command somewhere, this is useful for testing

func Command

func Command(command string, args ...string) Cmd

Command is a convenience wrapper over DefaultCmder.Command

func CommandContext

func CommandContext(ctx context.Context, command string, args ...string) Cmd

func RawCommand

func RawCommand(raw string) Cmd

func RawCommandContext

func RawCommandContext(ctx context.Context, raw string) Cmd

type Cmder

type Cmder interface {
	// command, args..., just like os/exec.Cmd
	Command(string, ...string) Cmd
	CommandContext(context.Context, string, ...string) Cmd
}

Cmder abstracts over creating commands

type LocalCmd

type LocalCmd struct {
	*osexec.Cmd
}

LocalCmd wraps os/exec.Cmd, implementing the exec.Cmd interface

func (*LocalCmd) Run

func (cmd *LocalCmd) Run() error

Run runs

func (*LocalCmd) SetDir

func (cmd *LocalCmd) SetDir(dir string) Cmd

func (*LocalCmd) SetEnv

func (cmd *LocalCmd) SetEnv(env ...string) Cmd

SetEnv sets env

func (*LocalCmd) SetStderr

func (cmd *LocalCmd) SetStderr(w io.Writer) Cmd

SetStderr sets stderr

func (*LocalCmd) SetStdin

func (cmd *LocalCmd) SetStdin(r io.Reader) Cmd

SetStdin sets stdin

func (*LocalCmd) SetStdout

func (cmd *LocalCmd) SetStdout(w io.Writer) Cmd

SetStdout set stdout

type LocalCmder

type LocalCmder struct{}

LocalCmder is a factory for LocalCmd, implementing Cmder

func (*LocalCmder) Command

func (c *LocalCmder) Command(name string, arg ...string) Cmd

Command returns a new exec.Cmd backed by Cmd

func (*LocalCmder) CommandContext

func (c *LocalCmder) CommandContext(ctx context.Context, name string, arg ...string) Cmd

CommandContext returns a new exec.Cmd with the context, backed by Cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL