Merge pull request #12511 from hashicorp/backport/hcl2_warn_once_on_uninstalled_plugins/neatly-awake-woodcock

This pull request was automerged via backport-assistant
pull/12513/head
hc-github-team-packer 3 years ago committed by GitHub
commit 46480ab660
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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