Documentation ¶
Index ¶
- Constants
- Variables
- func SetWinsize(cmd Command, winsize *Winsize) (err error)
- type Command
- type CommandOptions
- type Factory
- type FactoryOption
- type ProgramConfig
- type ProgramResolver
- type ProgramResolverMode
- type ProgramResolverResult
- type ProgramResolverSource
- type ProgramResolverStatus
- type ProgramResolverVarResult
- type Session
- type SessionList
- type Winsize
Constants ¶
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.
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 ¶
Types ¶
type CommandOptions ¶ added in v3.3.3
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
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)
Source Files ¶
- bulk_writer.go
- command.go
- command_docker.go
- command_file.go
- command_inline.go
- command_inline_shell.go
- command_native.go
- command_terminal.go
- command_unix.go
- command_virtual.go
- config.go
- config_code_block.go
- env_collector.go
- env_store.go
- env_store_unix.go
- factory.go
- program_resolver.go
- runtime.go
- session.go