Say so when an only or an except option did not match anything (#11050)
* Say so when an only or an except option did not match anything
This commit is contained in:
parent
98990fc34e
commit
4be9dfd183
|
@ -422,6 +422,7 @@ func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, block
|
||||||
func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Build, hcl.Diagnostics) {
|
func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Build, hcl.Diagnostics) {
|
||||||
res := []packersdk.Build{}
|
res := []packersdk.Build{}
|
||||||
var diags hcl.Diagnostics
|
var diags hcl.Diagnostics
|
||||||
|
possibleBuildNames := []string{}
|
||||||
|
|
||||||
cfg.debug = opts.Debug
|
cfg.debug = opts.Debug
|
||||||
cfg.force = opts.Force
|
cfg.force = opts.Force
|
||||||
|
@ -447,6 +448,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu
|
||||||
|
|
||||||
// Apply the -only and -except command-line options to exclude matching builds.
|
// Apply the -only and -except command-line options to exclude matching builds.
|
||||||
buildName := pcb.Name()
|
buildName := pcb.Name()
|
||||||
|
possibleBuildNames = append(possibleBuildNames, buildName)
|
||||||
// -only
|
// -only
|
||||||
if len(opts.Only) > 0 {
|
if len(opts.Only) > 0 {
|
||||||
onlyGlobs, diags := convertFilterOption(opts.Only, "only")
|
onlyGlobs, diags := convertFilterOption(opts.Only, "only")
|
||||||
|
@ -464,6 +466,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu
|
||||||
if !include {
|
if !include {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
opts.OnlyMatches++
|
||||||
}
|
}
|
||||||
|
|
||||||
// -except
|
// -except
|
||||||
|
@ -481,6 +484,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if exclude {
|
if exclude {
|
||||||
|
opts.ExceptMatches++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,6 +554,22 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu
|
||||||
res = append(res, pcb)
|
res = append(res, pcb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(opts.Only) > opts.OnlyMatches {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagWarning,
|
||||||
|
Summary: "an 'only' option was passed, but not all matches were found for the given build.",
|
||||||
|
Detail: fmt.Sprintf("Possible build names: %v.\n"+
|
||||||
|
"These could also be matched with a glob pattern like: 'happycloud.*'", possibleBuildNames),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if len(opts.Except) > opts.ExceptMatches {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagWarning,
|
||||||
|
Summary: "an 'except' option was passed, but did not match any build.",
|
||||||
|
Detail: fmt.Sprintf("Possible build names: %v.\n"+
|
||||||
|
"These could also be matched with a glob pattern like: 'happycloud.*'", possibleBuildNames),
|
||||||
|
})
|
||||||
|
}
|
||||||
return res, diags
|
return res, diags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ type GetBuildsOptions struct {
|
||||||
Except, Only []string
|
Except, Only []string
|
||||||
Debug, Force bool
|
Debug, Force bool
|
||||||
OnError string
|
OnError string
|
||||||
|
|
||||||
|
// count only/except match count; so say something when nothing matched.
|
||||||
|
ExceptMatches, OnlyMatches int
|
||||||
}
|
}
|
||||||
|
|
||||||
type BuildGetter interface {
|
type BuildGetter interface {
|
||||||
|
|
Loading…
Reference in New Issue