mirror of
https://github.com/docker/cli.git
synced 2026-01-13 18:22:35 +03:00
Move the code for parsing key-value files, such as used for env-files and label-files to a separate package. This allows other projects (such as compose) to use the same parsing logic, but provide custom lookup functions for their situation (which is slightly different). The new package provides utilities for parsing key-value files for either a file or an io.Reader. Most tests for EnvFile were now testing functionality that's already tested in the new package, so were (re)moved. Co-authored-by: Nicolas De Loof <nicolas.deloof@gmail.com> Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
25 lines
900 B
Go
25 lines
900 B
Go
package opts
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/docker/cli/pkg/kvfile"
|
|
)
|
|
|
|
// 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 kvfile.Parse(filename, os.LookupEnv)
|
|
}
|