mirror of
https://github.com/docker/cli.git
synced 2025-08-29 00:47:54 +03:00
previously docker did import environment variables if they were present but created them if they were not when it was asked via a --env-file cli option to import but not create them. fix is to only import the variable into the environment if it is present. additionally do not import variable names of zero-length (which are lines w/ a potential variable definition w/o a variable name). refs: - https://github.com/docker/for-linux/issues/284 Signed-off-by: Tom Klingenberg <tklingenberg@lastflood.net>
23 lines
866 B
Go
23 lines
866 B
Go
package opts
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// ParseEnvFile reads a file with environment variables enumerated by lines
|
|
//
|
|
// ``Environment variable names used by the utilities in the Shell and
|
|
// Utilities volume of IEEE Std 1003.1-2001 consist solely of uppercase
|
|
// letters, digits, and the '_' (underscore) from the characters defined in
|
|
// Portable Character Set and do not begin with a digit. *But*, other
|
|
// characters may be permitted by an implementation; applications shall
|
|
// tolerate the presence of such names.''
|
|
// -- http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html
|
|
//
|
|
// As of #16585, it's up to application inside docker to validate or not
|
|
// environment variables, that's why we just strip leading whitespace and
|
|
// nothing more.
|
|
func ParseEnvFile(filename string) ([]string, error) {
|
|
return parseKeyValueFile(filename, os.LookupEnv)
|
|
}
|