command

package
v3.3.2 Latest Latest
Warning

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

Go to latest
Published: May 28, 2024 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const MaxEnvironSizeInBytes = 128 * 1000 * 1000 // 128 MB

MaxEnvironSizeInBytes is the maximum size of an environment variable including equal sign and NUL separators.

This size is an artificial limit as Linux and macOS do not have a real limit.

View Source
const SessionListCapacity = 1024

SessionListCapacity is a maximum number of sessions stored in a single SessionList.

Variables

View Source
var EnvDumpCommand = func() string {
	path, err := os.Executable()
	if err != nil {
		panic(errors.WithMessage(err, "failed to get the executable path"))
	}
	return strings.Join([]string{path, "env", "dump", "--insecure"}, " ")
}()

EnvDumpCommand is a command that dumps the environment variables. It is declared as a var, because it must be replaced in tests. Equivalent is `env -0`.

View Source
var SignalToProcessGroup = true

SignalToProcessGroup is used in tests to disable sending signals to a process group.

Functions

func SetWinsize

func SetWinsize(cmd Command, winsize *Winsize) (err error)

Types

type Command added in v3.2.7

type Command interface {
	Interactive() bool
	Pid() int
	Running() bool
	Start(context.Context) error
	Signal(os.Signal) error
	Wait() error
}

type Docker added in v3.3.2

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

func NewDockerRuntime added in v3.3.2

func NewDockerRuntime(docker *dockerexec.Docker) *Docker

func (Docker) Environ added in v3.3.2

func (Docker) Environ() []string

func (Docker) GetEnv added in v3.3.2

func (Docker) GetEnv(key string) string

func (Docker) LookPath added in v3.3.2

func (Docker) LookPath(path string) (string, error)

type Factory added in v3.3.1

type Factory interface {
	Build(*ProgramConfig, Options) Command
}

func NewFactory added in v3.3.1

func NewFactory(_ *config.Config, runtime Runtime, logger *zap.Logger) Factory

type Host added in v3.3.2

type Host struct{}

func NewHostRuntime added in v3.3.2

func NewHostRuntime() *Host

func (Host) Environ added in v3.3.2

func (Host) Environ() []string

func (Host) GetEnv added in v3.3.2

func (Host) GetEnv(key string) string

func (Host) LookPath added in v3.3.2

func (Host) LookPath(path string) (string, error)

type Options added in v3.2.7

type Options struct {
	// EnableEcho enables the echo when typing in the terminal.
	// It's respected only by interactive commands, i.e. composed
	// with [virtualCommand].
	EnableEcho  bool
	Session     *Session
	StdinWriter io.Writer
	Stdin       io.Reader
	Stdout      io.Writer
	Stderr      io.Writer
}

type ProgramConfig added in v3.3.1

type ProgramConfig = runnerv2alpha1.ProgramConfig

ProgramConfig contains a serializable configuration for a command. It's agnostic to the runtime or particular execution settings.

func NewProgramConfigFromCodeBlock added in v3.3.1

func NewProgramConfigFromCodeBlock(block *document.CodeBlock) (*ProgramConfig, error)

type ProgramResolver

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

ProgramResolver uses a list of ProgramResolverSource to resolve environment variables found in a shell program.

func NewProgramResolver

func NewProgramResolver(mode ProgramResolverMode, sensitiveEnvNames []string, sources ...ProgramResolverSource) *ProgramResolver

func (*ProgramResolver) IsEnvSensitive added in v3.2.2

func (r *ProgramResolver) IsEnvSensitive(name string) bool

func (*ProgramResolver) Resolve

func (r *ProgramResolver) Resolve(reader io.Reader, writer io.Writer) (*ProgramResolverResult, error)

Resolve resolves the environment variables found in a shell program. It might modify the program and write it provided writer.

type ProgramResolverMode

type ProgramResolverMode uint8
const (
	// ProgramResolverModeAuto is a default which prompts for all unresolved variables.
	ProgramResolverModeAuto ProgramResolverMode = iota
	// ProgramResolverModePromptAll always prompts even if variables are resolved.
	ProgramResolverModePromptAll
	// ProgramResolverModeSkipAll does not prompt even if variables are unresolved.
	// All variables will be marked as resolved.
	ProgramResolverModeSkipAll
)

type ProgramResolverResult

type ProgramResolverResult struct {
	Variables       []ProgramResolverVarResult
	ModifiedProgram bool
}

type ProgramResolverSource

type ProgramResolverSource func() []string

func ProgramResolverSourceFunc

func ProgramResolverSourceFunc(env []string) ProgramResolverSource

type ProgramResolverStatus

type ProgramResolverStatus uint8
const (
	// ProgramResolverStatusUnresolved indicates a variable is unresolved.
	ProgramResolverStatusUnresolved ProgramResolverStatus = iota
	// ProgramResolverStatusUnresolvedWithMessage indicates a variable is unresolved but it has a message.
	// It typically means that the variable is of form `export FOO=this is a message`.
	ProgramResolverStatusUnresolvedWithMessage
	// ProgramResolverStatusUnresolvedWithPlaceholder indicates a variable is unresolved but it has a placeholder.
	// It typically means that the variable is of form `export FOO="this is a placeholder"`.
	ProgramResolverStatusUnresolvedWithPlaceholder
	// ProgramResolverStatusUnresolvedWithSecret indicates a variable is unresolved and needs to be treated with sensitivity.
	// It typically means that the variable is a password, certificate, or access key.
	ProgramResolverStatusUnresolvedWithSecret
	// ProgramResolverStatusResolved indicates a variable is resolved.
	ProgramResolverStatusResolved
)

type ProgramResolverVarResult

type ProgramResolverVarResult struct {
	// Status indicates the status of the result.
	Status ProgramResolverStatus

	// Name is the name of the variable.
	// It is set always.
	Name string

	// OriginalValue is the original value of the variable.
	// It's either a placeholder (`export FOO="this is a placeholder"`) or
	// a message (`export FOO=this is a message`).
	OriginalValue string

	// Value is the resolved value of the variable.
	// It is set only if Status is ProgramResolverStatusResolved.
	Value string
}

type Runtime added in v3.3.2

type Runtime interface {
	Environ() []string
	GetEnv(string) string
	LookPath(string) (string, error)
}

Runtime represents an execution environment for commands. It abstracts all OS-specific details and provides a unified interface.

type Session

type Session struct {
	ID string
	// contains filtered or unexported fields
}

Session is an object which lifespan contains multiple executions. It's used to exchange information between executions. Currently, it only keeps track of environment variables.

func NewSession

func NewSession() *Session

func (*Session) DeleteEnv

func (s *Session) DeleteEnv(keys ...string)

func (*Session) GetEnv

func (s *Session) GetEnv() []string

func (*Session) SetEnv

func (s *Session) SetEnv(env ...string) error

type SessionList

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

func NewSessionList

func NewSessionList() (*SessionList, error)

func (*SessionList) Add

func (sl *SessionList) Add(session *Session)

func (*SessionList) Delete

func (sl *SessionList) Delete(id string) bool

func (*SessionList) Get

func (sl *SessionList) Get(id string) (*Session, bool)

func (*SessionList) List

func (sl *SessionList) List() []*Session

func (*SessionList) Newest

func (sl *SessionList) Newest() (*Session, bool)

type Winsize

type Winsize pty.Winsize

Jump to

Keyboard shortcuts

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