package errors
import (
"path/filepath"
)
// GenerationError is an error returned from config generators
type GenerationError int
const (
NoGit GenerationError = iota + 1
SourceDirAndURL
InvalidSourceDir
CouldNotDetect
NoBuilderFound
InvalidDockerfile
ImageNotFound
)
func (e GenerationError) Error() string {
switch e {
case NoGit:
return "git was not detected in your system. It is needed for build config generation."
case SourceDirAndURL:
return "a source directory and a source URL were specified. Please only specify one."
case InvalidSourceDir:
return "the source directory is not readable or is invalid."
case CouldNotDetect:
return "could not detect a build type from the source."
case NoBuilderFound:
return "could not find a builder to match the source-to-image source repository."
case InvalidDockerfile:
return "invalid Dockerfile. Does not contain a FROM clause."
case ImageNotFound:
return "image data could not be found."
}
return ""
}
// MultipleDockerfiles creates an error caused by multiple Dockerfiles existing in a repository
func NewMultipleDockerfilesErr(paths []string) error {
err := multipleDockerFilesError{}
err = append(err, paths...)
return err
}
type multipleDockerFilesError []string
func (e multipleDockerFilesError) Error() string {
result := "multiple Dockerfile(s) found.\nSpecify one of the following flags:\n"
for _, f := range e {
dir := filepath.Dir(f)
if dir == "" {
dir = "."
}
result += "--docker-context=\"" + dir + "\""
result += "\n"
}
return result
}