github.com/willmadison/cli@v6.40.1-0.20181018160101-29d5937903ff+incompatible/command/flag/environment_variable.go (about)

     1  package flag
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  
     8  	flags "github.com/jessevdk/go-flags"
     9  )
    10  
    11  // WorkAroundPrefix is the flag in hole emoji
    12  const WorkAroundPrefix = "\U000026f3"
    13  
    14  type EnvironmentVariable string
    15  
    16  func (EnvironmentVariable) Complete(prefix string) []flags.Completion {
    17  	if prefix == "" || prefix[0] != '$' {
    18  		return nil
    19  	}
    20  
    21  	keyValPairs := os.Environ()
    22  	envVars := make([]string, len(keyValPairs))
    23  	for i, keyValPair := range keyValPairs {
    24  		envVars[i] = fmt.Sprintf("$%s", strings.Split(keyValPair, "=")[0])
    25  	}
    26  
    27  	return completions(envVars, prefix, true)
    28  }
    29  
    30  func (e *EnvironmentVariable) UnmarshalFlag(val string) error {
    31  	*e = EnvironmentVariable(strings.TrimLeft(val, WorkAroundPrefix))
    32  	return nil
    33  }