command

package
v3.3.5-rc.0 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2024 License: Apache-2.0 Imports: 28 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 CommandOptions added in v3.3.3

type CommandOptions 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 Factory added in v3.3.1

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

func NewFactory added in v3.3.1

func NewFactory(opts ...FactoryOption) Factory

type FactoryOption added in v3.3.3

type FactoryOption func(*commandFactory)

func WithDocker added in v3.3.3

func WithDocker(docker *dockerexec.Docker) FactoryOption

func WithLogger added in v3.3.3

func WithLogger(logger *zap.Logger) FactoryOption

func WithProject added in v3.3.3

func WithProject(proj *project.Project) FactoryOption

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 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) GetAllEnv added in v3.3.3

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

func (*Session) GetEnv

func (s *Session) GetEnv(key string) (string, bool)

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