backport of commit f4eda950c2

pull/12511/head
Lucas Bajolet 3 years ago
parent c76bc1dc0b
commit ebaad6eb5a

@ -8,6 +8,7 @@ import (
"fmt"
"log"
"runtime"
"strings"
"github.com/hashicorp/hcl/v2"
"github.com/hashicorp/packer-plugin-sdk/didyoumean"
@ -77,6 +78,8 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics {
return diags
}
uninstalledPlugins := map[string]string{}
for _, pluginRequirement := range pluginReqs {
sortedInstalls, err := pluginRequirement.ListInstallations(opts)
if err != nil {
@ -88,11 +91,7 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics {
continue
}
if len(sortedInstalls) == 0 {
diags = append(diags, &hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: fmt.Sprintf("no plugin installed for %s %v", pluginRequirement.Identifier, pluginRequirement.VersionConstraints.String()),
Detail: "Did you run packer init for this project ?",
})
uninstalledPlugins[pluginRequirement.Identifier.String()] = pluginRequirement.VersionConstraints.String()
continue
}
log.Printf("[TRACE] Found the following %q installations: %v", pluginRequirement.Identifier, sortedInstalls)
@ -108,6 +107,20 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics {
}
}
if len(uninstalledPlugins) > 0 {
detailMessage := &strings.Builder{}
detailMessage.WriteString("The following plugins are required, but not installed:\n\n")
for pluginName, pluginVersion := range uninstalledPlugins {
fmt.Fprintf(detailMessage, "* %s %s\n", pluginName, pluginVersion)
}
detailMessage.WriteString("\nDid you run packer init for this project ?")
diags = append(diags, &hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: "Missing plugins",
Detail: detailMessage.String(),
})
}
return diags
}

Loading…
Cancel
Save