diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-07-31 09:28:41 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-31 09:28:41 -0400 |
commit | b55a0ce42eb836b8d4a7091ea8bdd82e58f8352b (patch) | |
tree | f120dd0db970fc02235bf7a92a9fdea9258e84e6 /cmd/podman | |
parent | eea6bd1cf45746e754e2cceb76f8eb638bcad718 (diff) | |
parent | c95d2856f86cd8d85284e0b5adf2dd221173c268 (diff) | |
download | podman-b55a0ce42eb836b8d4a7091ea8bdd82e58f8352b.tar.gz podman-b55a0ce42eb836b8d4a7091ea8bdd82e58f8352b.tar.bz2 podman-b55a0ce42eb836b8d4a7091ea8bdd82e58f8352b.zip |
Merge pull request #7166 from vrothberg/2.0-backports
2.0 backports
Diffstat (limited to 'cmd/podman')
-rw-r--r-- | cmd/podman/images/build.go | 52 |
1 files changed, 18 insertions, 34 deletions
diff --git a/cmd/podman/images/build.go b/cmd/podman/images/build.go index 3ea74b4af..6cbffb3ae 100644 --- a/cmd/podman/images/build.go +++ b/cmd/podman/images/build.go @@ -138,36 +138,9 @@ func build(cmd *cobra.Command, args []string) error { return errors.New("cannot specify --squash, --squash-all and --layers options together") } - contextDir, containerFiles, err := extractContextAndFiles(args, buildOpts.File) - if err != nil { - return err - } - - ie, err := registry.NewImageEngine(cmd, args) - if err != nil { - return err - } - - apiBuildOpts, err := buildFlagsWrapperToOptions(cmd, contextDir, &buildOpts) - if err != nil { - return err - } - - _, err = ie.Build(registry.GetContext(), containerFiles, *apiBuildOpts) - return err -} - -// extractContextAndFiles parses args and files to extract a context directory -// and {Container,Docker}files. -// -// TODO: this was copied and altered from the v1 client which in turn was -// copied and altered from the Buildah code. Ideally, all of this code should -// be cleanly consolidated into a package that is shared between Buildah and -// Podman. -func extractContextAndFiles(args, files []string) (string, []string, error) { // Extract container files from the CLI (i.e., --file/-f) first. var containerFiles []string - for _, f := range files { + for _, f := range buildOpts.File { if f == "-" { containerFiles = append(containerFiles, "/dev/stdin") } else { @@ -181,7 +154,7 @@ func extractContextAndFiles(args, files []string) (string, []string, error) { // The context directory could be a URL. Try to handle that. tempDir, subDir, err := imagebuildah.TempDirForURL("", "buildah", args[0]) if err != nil { - return "", nil, errors.Wrapf(err, "error prepping temporary context directory") + return errors.Wrapf(err, "error prepping temporary context directory") } if tempDir != "" { // We had to download it to a temporary directory. @@ -196,7 +169,7 @@ func extractContextAndFiles(args, files []string) (string, []string, error) { // Nope, it was local. Use it as is. absDir, err := filepath.Abs(args[0]) if err != nil { - return "", nil, errors.Wrapf(err, "error determining path to directory %q", args[0]) + return errors.Wrapf(err, "error determining path to directory %q", args[0]) } contextDir = absDir } @@ -212,7 +185,7 @@ func extractContextAndFiles(args, files []string) (string, []string, error) { } absFile, err := filepath.Abs(containerFiles[i]) if err != nil { - return "", nil, errors.Wrapf(err, "error determining path to file %q", containerFiles[i]) + return errors.Wrapf(err, "error determining path to file %q", containerFiles[i]) } contextDir = filepath.Dir(absFile) break @@ -220,10 +193,10 @@ func extractContextAndFiles(args, files []string) (string, []string, error) { } if contextDir == "" { - return "", nil, errors.Errorf("no context directory and no Containerfile specified") + return errors.Errorf("no context directory and no Containerfile specified") } if !utils.IsDir(contextDir) { - return "", nil, errors.Errorf("context must be a directory: %q", contextDir) + return errors.Errorf("context must be a directory: %q", contextDir) } if len(containerFiles) == 0 { if utils.FileExists(filepath.Join(contextDir, "Containerfile")) { @@ -233,7 +206,18 @@ func extractContextAndFiles(args, files []string) (string, []string, error) { } } - return contextDir, containerFiles, nil + ie, err := registry.NewImageEngine(cmd, args) + if err != nil { + return err + } + + apiBuildOpts, err := buildFlagsWrapperToOptions(cmd, contextDir, &buildOpts) + if err != nil { + return err + } + + _, err = ie.Build(registry.GetContext(), containerFiles, *apiBuildOpts) + return err } // buildFlagsWrapperToOptions converts the local build flags to the build options used |