aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2019-07-11 13:39:31 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2019-07-11 17:15:20 -0400
commitefe9c5b0e7968473b261eae4641e422e4a0f69a2 (patch)
tree275006e32102a428e0f2a53a244e71dbd8557f3a
parentdf75fc62c8316bce058bbdda29f66af9dcc5573a (diff)
downloadpodman-efe9c5b0e7968473b261eae4641e422e4a0f69a2.tar.gz
podman-efe9c5b0e7968473b261eae4641e422e4a0f69a2.tar.bz2
podman-efe9c5b0e7968473b261eae4641e422e4a0f69a2.zip
Add glob parsing for --env flag
Sometimes you want to add a few environmen variables based on the last field being a "*". Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
-rw-r--r--cmd/podman/shared/parse/parse.go19
-rw-r--r--docs/podman-create.1.md14
-rw-r--r--docs/podman-run.1.md14
3 files changed, 32 insertions, 15 deletions
diff --git a/cmd/podman/shared/parse/parse.go b/cmd/podman/shared/parse/parse.go
index 7bc2652cb..a77002235 100644
--- a/cmd/podman/shared/parse/parse.go
+++ b/cmd/podman/shared/parse/parse.go
@@ -112,9 +112,22 @@ func parseEnv(env map[string]string, line string) error {
if len(data) > 1 {
env[name] = data[1]
} else {
- // if only a pass-through variable is given, clean it up.
- val, _ := os.LookupEnv(name)
- env[name] = val
+ if strings.HasSuffix(name, "*") {
+ name = strings.TrimSuffix(name, "*")
+ for _, e := range os.Environ() {
+ part := strings.SplitN(e, "=", 2)
+ if len(part) < 2 {
+ continue
+ }
+ if strings.HasPrefix(part[0], name) {
+ env[part[0]] = part[1]
+ }
+ }
+ } else {
+ // if only a pass-through variable is given, clean it up.
+ val, _ := os.LookupEnv(name)
+ env[name] = val
+ }
}
return nil
}
diff --git a/docs/podman-create.1.md b/docs/podman-create.1.md
index 00b706d4a..8f7577a86 100644
--- a/docs/podman-create.1.md
+++ b/docs/podman-create.1.md
@@ -245,7 +245,9 @@ You need to specify multi option commands in the form of a json string.
Set environment variables
-This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". See **Environment** note below for precedence.
+This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
+
+See **Environment** note below for precedence.
**--env-host**=*true|false*
@@ -905,16 +907,16 @@ required for VPN, without it containers need to be run with the --net=host flag.
## ENVIRONMENT
-Environment variables within containers can be set using multiple different options: This section describes the presidence.
+Environment variables within containers can be set using multiple different options: This section describes the precedence.
-Presidence Order:
+Precedence Order:
**--env-host** : Host environment of the process executing podman is added.
- Container image : Any enviroment variables specified in the contianer image.
+ Container image : Any enviroment variables specified in the container image.
- **--env-file** : Any environment variables specfied via env-files. If multiple files specified, then they override each other in order of entry.
+ **--env-file** : Any environment variables specified via env-files. If multiple files specified, then they override each other in order of entry.
- **--env** : Any environment variables specified will overide previous settings.
+ **--env** : Any environment variables specified will override previous settings.
## FILES
diff --git a/docs/podman-run.1.md b/docs/podman-run.1.md
index ea1670fac..dd52958ac 100644
--- a/docs/podman-run.1.md
+++ b/docs/podman-run.1.md
@@ -252,7 +252,9 @@ You need to specify multi option commands in the form of a json string.
Set environment variables
-This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". See **Environment** note below for precedence.
+This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
+
+See **Environment** note below for precedence.
**--env-host**=*true|false*
@@ -1189,17 +1191,17 @@ required for VPN, without it containers need to be run with the --net=host flag.
## ENVIRONMENT
-Environment variables within containers can be set using multiple different options: This section describes the presidence.
+Environment variables within containers can be set using multiple different options: This section describes the precedence.
-Presidence Order:
+Precedence Order:
**--env-host** : Host environment of the process executing podman is added.
- Container image : Any enviroment variables specified in the contianer image.
+ Container image : Any enviroment variables specified in the container image.
- **--env-file** : Any environment variables specfied via env-files. If multiple files specified, then they override each other in order of entry.
+ **--env-file** : Any environment variables specified via env-files. If multiple files specified, then they override each other in order of entry.
- **--env** : Any environment variables specified will overide previous settings.
+ **--env** : Any environment variables specified will override previous settings.
## FILES