Documentation ¶
Index ¶
- func BuildEnvs(env []string) map[string]string
- func EqualEnvKeys(from, to string) bool
- type Lex
- func (s *Lex) ProcessWord(word string, env []string) (string, error)
- func (s *Lex) ProcessWordWithMap(word string, env map[string]string) (string, error)
- func (s *Lex) ProcessWordWithMatches(word string, env map[string]string) (string, map[string]struct{}, error)
- func (s *Lex) ProcessWords(word string, env []string) ([]string, error)
- func (s *Lex) ProcessWordsWithMap(word string, env map[string]string) ([]string, error)
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.
Types ¶
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
func (*Lex) ProcessWord ¶
ProcessWord will use the 'env' list of environment variables, and replace any env var references in 'word'.
func (*Lex) ProcessWordWithMap ¶
ProcessWordWithMap will use the 'env' list of environment variables, and replace any env var references in 'word'.
func (*Lex) ProcessWordWithMatches ¶ added in v0.10.0
func (s *Lex) ProcessWordWithMatches(word string, env map[string]string) (string, map[string]struct{}, 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.