Documentation ¶
Index ¶
- Constants
- Variables
- func SetWinsize(cmd *VirtualCommand, winsize *Winsize) error
- type Config
- type ErrInterpretersNotFound
- type ErrUnsupportedLanguage
- type NativeCommand
- func (c *NativeCommand) Pid() int
- func (c *NativeCommand) Running() bool
- func (c *NativeCommand) SetWinsize(rows, cols, x, y uint16) error
- func (c *NativeCommand) Start(ctx context.Context) (err error)
- func (c *NativeCommand) StopWithSignal(sig os.Signal) error
- func (c *NativeCommand) Wait() (err error)
- type NativeCommandOptions
- type ProgramResolver
- type ProgramResolverMode
- type ProgramResolverResult
- type ProgramResolverSource
- type ProgramResolverStatus
- type ProgramResolverVarResult
- type Session
- type SessionList
- type VirtualCommand
- type VirtualCommandOptions
- type Winsize
Constants ¶
const MaxEnvironSizInBytes = 128 * 1000 * 1000 // 128 MB
MaxEnvironSizInBytes 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.
const SessionListCapacity = 1024
SessionListCapacity is a maximum number of sessions stored in a single SessionList.
Variables ¶
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`.
var SignalToProcessGroup = true
SignalToProcessGroup is used in tests to disable sending signals to a process group.
Functions ¶
func SetWinsize ¶
func SetWinsize(cmd *VirtualCommand, winsize *Winsize) error
Types ¶
type Config ¶
type Config = runnerv2alpha1.ProgramConfig
Config contains a serializable configuration for a command. It's agnostic to the runtime or particular execution settings.
type ErrInterpretersNotFound ¶
type ErrInterpretersNotFound struct {
// contains filtered or unexported fields
}
func (ErrInterpretersNotFound) Error ¶
func (e ErrInterpretersNotFound) Error() string
type ErrUnsupportedLanguage ¶
type ErrUnsupportedLanguage struct {
// contains filtered or unexported fields
}
func (ErrUnsupportedLanguage) Error ¶
func (e ErrUnsupportedLanguage) Error() string
type NativeCommand ¶
type NativeCommand struct {
// contains filtered or unexported fields
}
func NewNative ¶
func NewNative(cfg *Config, options *NativeCommandOptions) (*NativeCommand, error)
func (*NativeCommand) Pid ¶
func (c *NativeCommand) Pid() int
func (*NativeCommand) Running ¶
func (c *NativeCommand) Running() bool
func (*NativeCommand) SetWinsize ¶
func (c *NativeCommand) SetWinsize(rows, cols, x, y uint16) error
func (*NativeCommand) StopWithSignal ¶
func (c *NativeCommand) StopWithSignal(sig os.Signal) error
func (*NativeCommand) Wait ¶
func (c *NativeCommand) Wait() (err error)
type NativeCommandOptions ¶
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 MustNewSessionWithEnv ¶
func NewSession ¶
func NewSession() *Session
func NewSessionWithEnv ¶
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) List ¶
func (sl *SessionList) List() []*Session
func (*SessionList) Newest ¶
func (sl *SessionList) Newest() (*Session, bool)
type VirtualCommand ¶
type VirtualCommand struct {
// contains filtered or unexported fields
}
func NewVirtual ¶
func NewVirtual(cfg *Config, options *VirtualCommandOptions) (*VirtualCommand, error)
func (*VirtualCommand) Pid ¶
func (c *VirtualCommand) Pid() int
func (*VirtualCommand) Running ¶
func (c *VirtualCommand) Running() bool
func (*VirtualCommand) StopWithSignal ¶
func (c *VirtualCommand) StopWithSignal(sig os.Signal) error
func (*VirtualCommand) Wait ¶
func (c *VirtualCommand) Wait() (err error)