Skip to content

Commit

Permalink
refactor(build): improve err when file specified by -f does not exist
Browse files Browse the repository at this point in the history
When the user specifies a Containerfile or Dockfile with the -f flag in podman build, if the file does not exist, the error should be intuitive to the user.

Fixed: containers#22940

Signed-off-by: Kevin Cui <bh@bugs.cc>
  • Loading branch information
BlackHole1 committed Jun 13, 2024
1 parent 798beb4 commit 0eb383b
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions cmd/podman/common/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,7 @@ func ParseBuildOpts(cmd *cobra.Command, args []string, buildOpts *BuildFlagsWrap
// No context directory or URL was specified. Try to use the home of
// the first locally-available Containerfile.
for i := range containerFiles {
if strings.HasPrefix(containerFiles[i], "http://") ||
strings.HasPrefix(containerFiles[i], "https://") ||
strings.HasPrefix(containerFiles[i], "git://") ||
strings.HasPrefix(containerFiles[i], "github.com/") {
if isUrl(containerFiles[i]) {
continue
}
absFile, err := filepath.Abs(containerFiles[i])
Expand Down Expand Up @@ -239,6 +236,16 @@ func ParseBuildOpts(cmd *cobra.Command, args []string, buildOpts *BuildFlagsWrap
default:
return nil, fmt.Errorf("no Containerfile or Dockerfile specified or found in context directory, %s: %w", contextDir, syscall.ENOENT)
}
} else {
for _, f := range containerFiles {
if isUrl(f) || f == "/dev/stdin" {
continue
}
if !utils.FileExists(f) {
return nil, fmt.Errorf("the specified Containerfile or Dockerfile does not exist, %s: %w", f, syscall.ENOENT)
}
}

}

var logFile *os.File
Expand Down Expand Up @@ -628,3 +635,10 @@ func parseDockerignore(ignoreFile string) ([]string, error) {
}
return excludes, nil
}

func isUrl(s string) bool {
return strings.HasPrefix(s, "http://") ||
strings.HasPrefix(s, "https://") ||
strings.HasPrefix(s, "git://") ||
strings.HasPrefix(s, "github.com/")
}

0 comments on commit 0eb383b

Please sign in to comment.