shell

package
v0.8.9 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: MPL-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package shell was forked from buildkit/frontend/dockerfile/shell in order to allow shelling-out. This package is distributed under the original file's license, The Apache License, which is defined under https://github.com/moby/buildkit/blob/7c3e9fdd48c867f48a07a80cde64cc2d578cb332/LICENSE

Index

Constants

This section is empty.

Variables

View Source
var ErrNoShellOut = errors.New("shelling out is not available")

ErrNoShellOut occurs when the EvalShellOutFn was not set

Functions

func BuildEnvs

func BuildEnvs(env []string) map[string]string

BuildEnvs takes a list of envs and converts it to a map

func BuildShellOutEnvs added in v0.7.0

func BuildShellOutEnvs(shellOutEnvs []string) map[string]struct{}

BuildShellOutEnvs takes a list of shellOutEnvs and converts it to a map

func EqualEnvKeys

func EqualEnvKeys(from, to string) bool

EqualEnvKeys compare two strings and returns true if they are equal. On Unix this comparison is case sensitive. On Windows this comparison is case insensitive.

func IsValidEnvVarName added in v0.7.0

func IsValidEnvVarName(name string) bool

IsValidEnvVarName returns true if env name is valid

Types

type EvalShellOutFn

type EvalShellOutFn func(cmd string) (string, error)

EvalShellOutFn is a supplied callback function which is called whenever a shell-out command needs to be evaluated

type Lex

type Lex struct {
	RawQuotes         bool
	RawEscapes        bool
	SkipProcessQuotes bool
	SkipUnsetEnv      bool
	ShellOut          EvalShellOutFn
	// contains filtered or unexported fields
}

Lex performs shell word splitting and variable expansion.

Lex takes a string and an array of env variables and process all quotes (" and ') as well as $xxx and ${xxx} env variable tokens. Tries to mimic bash shell process. It doesn't support all flavors of ${xx:...} formats but new ones can be added by adding code to the "special ${} format processing" section

func NewLex

func NewLex(escapeToken rune) *Lex

NewLex creates a new Lex which uses escapeToken to escape quotes.

func (*Lex) ProcessWord

func (s *Lex) ProcessWord(word string, env []string, shelloutEnvs []string) (string, error)

ProcessWord will use the 'env' list of environment variables, and replace any env var references in 'word'.

func (*Lex) ProcessWordWithMap

func (s *Lex) ProcessWordWithMap(word string, env map[string]string, shelloutEnvs map[string]struct{}) (string, error)

ProcessWordWithMap will use the 'env' list of environment variables, and replace any env var references in 'word'.

func (*Lex) ProcessWords

func (s *Lex) ProcessWords(word string, env []string, shelloutEnvs []string) ([]string, error)

ProcessWords will use the 'env' list of environment variables, and replace any env var references in 'word' then it will also return a slice of strings which represents the 'word' split up based on spaces - taking into account quotes. Note that this splitting is done **after** the env var substitutions are done. Note, each one is trimmed to remove leading and trailing spaces (unless they are quoted", but ProcessWord retains spaces between words.

func (*Lex) ProcessWordsWithMap

func (s *Lex) ProcessWordsWithMap(word string, env map[string]string, shelloutEnvs map[string]struct{}) ([]string, error)

ProcessWordsWithMap will use the 'env' list of environment variables, and replace any env var references in 'word'.

Jump to

Keyboard shortcuts

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