Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EqualEnvKeys ¶
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 NormalizeEnvKey ¶ added in v0.15.0
NormalizeEnvKey returns the key in a normalized form that can be used for comparison. On Unix this is a no-op. On Windows this converts the key to uppercase.
Types ¶
type EnvGetter ¶ added in v0.15.0
func EnvsFromSlice ¶ added in v0.15.0
type Lex ¶
type Lex struct { RawQuotes bool RawEscapes bool SkipProcessQuotes bool SkipUnsetEnv bool // 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
It is not safe to call methods on a Lex instance concurrently.
func (*Lex) ProcessWord ¶
ProcessWord will use the 'env' list of environment variables, and replace any env var references in 'word'. It will also return variables in word which were not found in the 'env' list, which is useful in later linting. TODO: rename
func (*Lex) ProcessWordWithMatches ¶ added in v0.10.0
func (s *Lex) ProcessWordWithMatches(word string, env EnvGetter) (ProcessWordResult, error)
ProcessWordWithMatches will use the 'env' list of environment variables, replace any env var references in 'word' and return the env that were used.
func (*Lex) ProcessWords ¶
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.