github.com/afbjorklund/moby@v20.10.5+incompatible/opts/env.go (about)

     1  package opts // import "github.com/docker/docker/opts"
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/pkg/errors"
     8  )
     9  
    10  // ValidateEnv validates an environment variable and returns it.
    11  // If no value is specified, it obtains its value from the current environment
    12  //
    13  // As on ParseEnvFile and related to #16585, environment variable names
    14  // are not validate whatsoever, it's up to application inside docker
    15  // to validate them or not.
    16  //
    17  // The only validation here is to check if name is empty, per #25099
    18  func ValidateEnv(val string) (string, error) {
    19  	arr := strings.SplitN(val, "=", 2)
    20  	if arr[0] == "" {
    21  		return "", errors.New("invalid environment variable: " + val)
    22  	}
    23  	if len(arr) > 1 {
    24  		return val, nil
    25  	}
    26  	if envVal, ok := os.LookupEnv(arr[0]); ok {
    27  		return arr[0] + "=" + envVal, nil
    28  	}
    29  	return val, nil
    30  }