diff --git a/command/build.go b/command/build.go index 60ede4168..b48d248d5 100644 --- a/command/build.go +++ b/command/build.go @@ -86,6 +86,11 @@ func writeDiags(ui packersdk.Ui, files map[string]*hcl.File, diags hcl.Diagnosti } func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int { + // Set the release only flag if specified as argument + // + // This deactivates the capacity for Packer to load development binaries. + c.CoreConfig.Components.PluginConfig.ReleasesOnly = cla.ReleaseOnly + packerStarter, ret := c.GetConfig(&cla.MetaArgs) if ret != 0 { return ret diff --git a/command/cli.go b/command/cli.go index 2dfc57dbd..2fa3c02fd 100644 --- a/command/cli.go +++ b/command/cli.go @@ -90,6 +90,9 @@ func (ba *BuildArgs) AddFlagSets(flags *flag.FlagSet) { flags.Var(flagOnError, "on-error", "") flags.BoolVar(&ba.MetaArgs.WarnOnUndeclaredVar, "warn-on-undeclared-var", false, "Show warnings for variable files containing undeclared variables.") + + flags.BoolVar(&ba.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") + ba.MetaArgs.AddFlagSets(flags) } @@ -100,6 +103,7 @@ type BuildArgs struct { Color, TimestampUi, MachineReadable bool ParallelBuilds int64 OnError string + ReleaseOnly bool } func (ia *InitArgs) AddFlagSets(flags *flag.FlagSet) { @@ -142,6 +146,7 @@ func (va *ValidateArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&va.SyntaxOnly, "syntax-only", false, "check syntax only") flags.BoolVar(&va.NoWarnUndeclaredVar, "no-warn-undeclared-var", false, "Ignore warnings for variable files containing undeclared variables.") flags.BoolVar(&va.EvaluateDatasources, "evaluate-datasources", false, "evaluate datasources for validation (HCL2 only, may incur costs)") + flags.BoolVar(&va.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") va.MetaArgs.AddFlagSets(flags) } @@ -151,6 +156,7 @@ type ValidateArgs struct { MetaArgs SyntaxOnly, NoWarnUndeclaredVar bool EvaluateDatasources bool + ReleaseOnly bool } func (va *InspectArgs) AddFlagSets(flags *flag.FlagSet) { diff --git a/command/validate.go b/command/validate.go index 9747dabf9..da41e30cf 100644 --- a/command/validate.go +++ b/command/validate.go @@ -48,6 +48,11 @@ func (c *ValidateCommand) ParseArgs(args []string) (*ValidateArgs, int) { } func (c *ValidateCommand) RunContext(ctx context.Context, cla *ValidateArgs) int { + // Set the release only flag if specified as argument + // + // This deactivates the capacity for Packer to load development binaries. + c.CoreConfig.Components.PluginConfig.ReleasesOnly = cla.ReleaseOnly + // By default we want to inform users of undeclared variables when validating but not during build time. cla.MetaArgs.WarnOnUndeclaredVar = true if cla.NoWarnUndeclaredVar {