summaryrefslogtreecommitdiff
path: root/vendor/github.com/openshift/imagebuilder
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/openshift/imagebuilder')
-rw-r--r--vendor/github.com/openshift/imagebuilder/builder.go15
-rw-r--r--vendor/github.com/openshift/imagebuilder/dispatchers.go6
-rw-r--r--vendor/github.com/openshift/imagebuilder/imagebuilder.spec2
-rw-r--r--vendor/github.com/openshift/imagebuilder/internals.go25
4 files changed, 42 insertions, 6 deletions
diff --git a/vendor/github.com/openshift/imagebuilder/builder.go b/vendor/github.com/openshift/imagebuilder/builder.go
index 7f2f6e482..ffc3b257f 100644
--- a/vendor/github.com/openshift/imagebuilder/builder.go
+++ b/vendor/github.com/openshift/imagebuilder/builder.go
@@ -332,10 +332,19 @@ func ParseFile(path string) (*parser.Node, error) {
// Step creates a new step from the current state.
func (b *Builder) Step() *Step {
- dst := make([]string, len(b.Env)+len(b.RunConfig.Env))
- copy(dst, b.Env)
+ argsMap := make(map[string]string)
+ for _, argsVal := range b.Arguments() {
+ val := strings.Split(argsVal, "=")
+ if len(val) > 1 {
+ argsMap[val[0]] = val[1]
+ }
+ }
+
+ userArgs := makeUserArgs(b.Env, argsMap)
+ dst := make([]string, len(userArgs)+len(b.RunConfig.Env))
+ copy(dst, userArgs)
dst = append(dst, b.RunConfig.Env...)
- dst = append(dst, b.Arguments()...)
+
return &Step{Env: dst}
}
diff --git a/vendor/github.com/openshift/imagebuilder/dispatchers.go b/vendor/github.com/openshift/imagebuilder/dispatchers.go
index 1d77a193b..3a350fbee 100644
--- a/vendor/github.com/openshift/imagebuilder/dispatchers.go
+++ b/vendor/github.com/openshift/imagebuilder/dispatchers.go
@@ -153,8 +153,9 @@ func add(b *Builder, args []string, attributes map[string]bool, flagArgs []strin
var chown string
last := len(args) - 1
dest := makeAbsolute(args[last], b.RunConfig.WorkingDir)
+ userArgs := makeUserArgs(b.Env, b.Args)
for _, a := range flagArgs {
- arg, err := ProcessWord(a, b.Env)
+ arg, err := ProcessWord(a, userArgs)
if err != nil {
return err
}
@@ -181,8 +182,9 @@ func dispatchCopy(b *Builder, args []string, attributes map[string]bool, flagArg
dest := makeAbsolute(args[last], b.RunConfig.WorkingDir)
var chown string
var from string
+ userArgs := makeUserArgs(b.Env, b.Args)
for _, a := range flagArgs {
- arg, err := ProcessWord(a, b.Env)
+ arg, err := ProcessWord(a, userArgs)
if err != nil {
return err
}
diff --git a/vendor/github.com/openshift/imagebuilder/imagebuilder.spec b/vendor/github.com/openshift/imagebuilder/imagebuilder.spec
index 07c880166..3b32403a7 100644
--- a/vendor/github.com/openshift/imagebuilder/imagebuilder.spec
+++ b/vendor/github.com/openshift/imagebuilder/imagebuilder.spec
@@ -12,7 +12,7 @@
#
%global golang_version 1.8.1
-%{!?version: %global version 1.1-dev}
+%{!?version: %global version 1.1.5}
%{!?release: %global release 1}
%global package_name imagebuilder
%global product_name Container Image Builder
diff --git a/vendor/github.com/openshift/imagebuilder/internals.go b/vendor/github.com/openshift/imagebuilder/internals.go
index 3c60c7983..b652dc1c7 100644
--- a/vendor/github.com/openshift/imagebuilder/internals.go
+++ b/vendor/github.com/openshift/imagebuilder/internals.go
@@ -92,3 +92,28 @@ func parseOptInterval(f *flag.Flag) (time.Duration, error) {
}
return d, nil
}
+
+// makeUserArgs - Package the variables from the Dockerfile defined by
+// the ENV aand the ARG statements into one slice so the values
+// defined by both can later be evaluated when resolving variables
+// such as ${MY_USER}. If the variable is defined by both ARG and ENV
+// don't include the definition of the ARG variable.
+func makeUserArgs(bEnv []string, bArgs map[string]string) (userArgs []string) {
+
+ userArgs = bEnv
+ envMap := make(map[string]string)
+ for _, envVal := range bEnv {
+ val := strings.Split(envVal, "=")
+ if len(val) > 1 {
+ envMap[val[0]] = val[1]
+ }
+ }
+
+ for key, value := range bArgs {
+ if _, ok := envMap[key]; ok {
+ continue
+ }
+ userArgs = append(userArgs, key+"="+value)
+ }
+ return userArgs
+}