command

package
v3.10.3 Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2025 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnvNameTerminalSessionEnabled  = "_RUNME_TERMINAL_SESSION_ENABLED"
	EnvNameTerminalSessionPrePath  = "_RUNME_TERMINAL_SESSION_PREPATH"
	EnvNameTerminalSessionPostPath = "_RUNME_TERMINAL_SESSION_POSTPATH"
)

Constants for supporting terminal session via the "beta session" command.

View Source
const StoreStdoutEnvName = "__"

Variables

This section is empty.

Functions

func CreateEnv added in v3.7.1

func CreateEnv(key, value string) string

func EnvSliceToString added in v3.5.0

func EnvSliceToString(env []string) string

func IsShellLanguage added in v3.8.0

func IsShellLanguage(languageID string) bool

TODO(adamb): this function is used for two quite different inputs: program name and language ID.

func IsShellProgram added in v3.8.0

func IsShellProgram(programName string) bool

func SetEnvDumpCommandForTesting added in v3.10.0

func SetEnvDumpCommandForTesting()

SetEnvDumpCommandForTesting overrides the default command that dumps the environment variables. It is and should be used only for testing purposes. TODO(adamb): this can be made obsolete. runme must be built in the test environment and put into the PATH.

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(context.Context) 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

	// NoShell, if true, disables detecting whether the program
	// is a shell script.
	NoShell bool

	// Session is used to share the state between commands.
	// If none is provided, an empty one will be used.
	Session *session.Session

	// StdinWriter is used by [terminalCommand].
	StdinWriter io.Writer
	Stdin       io.Reader
	Stdout      io.Writer
	Stderr      io.Writer
}

type ConfigBuilderOption added in v3.9.3

type ConfigBuilderOption func(*configBuilder) error

func WithInteractiveLegacy added in v3.9.3

func WithInteractiveLegacy() ConfigBuilderOption

type EnvCollectorFactory added in v3.10.0

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

func NewEnvCollectorFactory added in v3.10.0

func NewEnvCollectorFactory() *EnvCollectorFactory

func (*EnvCollectorFactory) Build added in v3.10.0

func (f *EnvCollectorFactory) Build() (envCollector, error)

func (*EnvCollectorFactory) UseFifo added in v3.10.0

func (f *EnvCollectorFactory) UseFifo(value bool) *EnvCollectorFactory

func (*EnvCollectorFactory) WithEnryption added in v3.10.0

func (f *EnvCollectorFactory) WithEnryption(value bool) *EnvCollectorFactory

type EnvDecryptor added in v3.5.0

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

func NewEnvDecryptor added in v3.5.0

func NewEnvDecryptor(key []byte, nonce []byte, source io.Reader) (*EnvDecryptor, error)

func (*EnvDecryptor) Read added in v3.5.0

func (d *EnvDecryptor) Read(p []byte) (n int, err error)

type EnvEncryptor added in v3.5.0

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

func NewEnvEncryptor added in v3.5.0

func NewEnvEncryptor(key []byte, nonce []byte, source io.Reader) (*EnvEncryptor, error)

func (*EnvEncryptor) Read added in v3.5.0

func (e *EnvEncryptor) Read(p []byte) (n int, err error)

type EnvProducer added in v3.5.0

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

func NewEnvProducerFromEnv added in v3.5.0

func NewEnvProducerFromEnv() (*EnvProducer, error)

func (*EnvProducer) Read added in v3.5.0

func (p *EnvProducer) Read(b []byte) (n int, err error)

type Factory added in v3.3.1

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

func NewFactory added in v3.3.1

func NewFactory(opts ...FactoryOption) Factory

type FactoryOption added in v3.3.3

type FactoryOption func(*commandFactory)

func WithDebug added in v3.5.0

func WithDebug() FactoryOption

WithDebug enables additional debug information. For example, for shell commands it prints out commands before execution.

func WithDocker added in v3.3.3

func WithDocker(docker *dockerexec.Docker) FactoryOption

WithDocker provides a docker client for docker commands.

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

func WithRuntime added in v3.7.1

func WithRuntime(r Runtime) FactoryOption

type ProgramConfig added in v3.3.1

type ProgramConfig = runnerv2.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, opts ...ConfigBuilderOption) (*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
	LookPathUsingPathEnv(file, pathEnv string) (string, error)
}

type ScriptEnvSetter added in v3.10.0

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

ScriptEnvSetter returns a shell script that installs itself and collects environment variables to provided pre- and post-paths.

func NewScriptEnvSetter added in v3.10.0

func NewScriptEnvSetter(prePath, postPath string, debug bool) ScriptEnvSetter

func (ScriptEnvSetter) SetOnShell added in v3.10.0

func (s ScriptEnvSetter) SetOnShell(shell io.Writer) error

type Winsize

type Winsize pty.Winsize

Jump to

Keyboard shortcuts

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