process

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package process provides the process runner implementation on the host.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CountProcessesByStatus added in v0.1.5

func CountProcessesByStatus(ctx context.Context) (map[string][]*procs.Process, error)

CountProcessesByStatus counts all processes by its process status.

Types

type Op

type Op struct {
	// contains filtered or unexported fields
}

type OpOption

type OpOption func(*Op)

func WithBashScriptContentsToRun added in v0.0.4

func WithBashScriptContentsToRun(script string) OpOption

Sets the bash script contents to run. This is useful for running multiple/complicated commands.

func WithCommand added in v0.0.4

func WithCommand(args ...string) OpOption

Add a new command to run.

func WithCommands added in v0.0.4

func WithCommands(commands [][]string) OpOption

Sets/overwrites the commands to run.

func WithEnvs

func WithEnvs(envs ...string) OpOption

Add a new environment variable to the process in the format of `KEY=VALUE`.

func WithOutputFile

func WithOutputFile(file *os.File) OpOption

Sets the file to which stderr and stdout will be written. For instance, you can set it to os.Stderr to pipe all the sub-process stderr and stdout to the parent process's stderr. Default is to set the os.Pipe to forward its output via io.ReadCloser.

If the process exits with a non-zero exit code, stdout/stderr pipes may not work. If retry configuration is specified, specify the output file to read all the output.

func WithRestartConfig

func WithRestartConfig(config RestartConfig) OpOption

Configures the process restart behavior. If the process exits with a non-zero exit code, stdout/stderr pipes may not work.

func WithRunAsBashScript

func WithRunAsBashScript() OpOption

Set true to run commands as a bash script. This is useful for running multiple/complicated commands.

type Process

type Process interface {
	// Starts the process but does not wait for it to exit.
	Start(ctx context.Context) error

	// Aborts the process and waits for it to exit.
	Abort(ctx context.Context) error

	// Waits for the process to exit and returns the error, if any.
	// If the command completes successfully, the error will be nil.
	Wait() <-chan error

	// Returns the current pid of the process.
	PID() int32

	// Returns the stdout reader.
	// stderr/stdout piping sometimes doesn't work well on latest mac with io.ReadAll
	// Use bufio.NewScanner(p.StdoutReader()) instead.
	//
	// If the process exits with a non-zero exit code, stdout/stderr pipes may not work.
	// If retry configuration is specified, specify the output file to read all the output.
	StdoutReader() io.Reader

	// Returns the stderr reader.
	// stderr/stdout piping sometimes doesn't work well on latest mac with io.ReadAll
	// Use bufio.NewScanner(p.StderrReader()) instead.
	//
	// If the process exits with a non-zero exit code, stdout/stderr pipes may not work.
	// If retry configuration is specified, specify the output file to read all the output.
	StderrReader() io.Reader
}

func New

func New(opts ...OpOption) (Process, error)

type RestartConfig

type RestartConfig struct {
	// Set true to restart the process on error exit.
	OnError bool
	// Set the maximum number of restarts.
	Limit int
	// Set the interval between restarts.
	Interval time.Duration
}

RestartConfig is the configuration for the process restart. If the process exits with a non-zero exit code, stdout/stderr pipes may not work. If retry configuration is specified, specify the output file to read all the output.

Jump to

Keyboard shortcuts

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