|
|
|
|
@ -12,6 +12,7 @@ import (
|
|
|
|
|
"github.com/hashicorp/atlas-go/archive"
|
|
|
|
|
"github.com/hashicorp/atlas-go/v1"
|
|
|
|
|
"github.com/hashicorp/packer/helper/flag-kv"
|
|
|
|
|
"github.com/hashicorp/packer/helper/flag-slice"
|
|
|
|
|
"github.com/hashicorp/packer/template"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@ -42,6 +43,7 @@ func (c *PushCommand) Run(args []string) int {
|
|
|
|
|
var message string
|
|
|
|
|
var name string
|
|
|
|
|
var create bool
|
|
|
|
|
var privVars []string
|
|
|
|
|
|
|
|
|
|
flags := c.Meta.FlagSet("push", FlagSetVars)
|
|
|
|
|
flags.Usage = func() { c.Ui.Error(c.Help()) }
|
|
|
|
|
@ -50,6 +52,7 @@ func (c *PushCommand) Run(args []string) int {
|
|
|
|
|
flags.StringVar(&message, "message", "", "message")
|
|
|
|
|
flags.StringVar(&name, "name", "", "name")
|
|
|
|
|
flags.BoolVar(&create, "create", false, "create (deprecated)")
|
|
|
|
|
flags.Var((*sliceflag.StringFlag)(&privVars), "private", "")
|
|
|
|
|
if err := flags.Parse(args); err != nil {
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
@ -202,6 +205,12 @@ func (c *PushCommand) Run(args []string) int {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Collect the variables from CLI args and any var files
|
|
|
|
|
if privs := flags.Lookup("private"); privs != nil {
|
|
|
|
|
pvf := privs.Value.(*sliceflag.StringFlag)
|
|
|
|
|
pvars := []string(*pvf)
|
|
|
|
|
uploadOpts.PrivVars = pvars
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uploadOpts.Vars = make(map[string]string)
|
|
|
|
|
if vs := flags.Lookup("var"); vs != nil {
|
|
|
|
|
f := vs.Value.(*kvflag.Flag)
|
|
|
|
|
@ -301,6 +310,8 @@ Options:
|
|
|
|
|
|
|
|
|
|
-token=<token> The access token to use to when uploading
|
|
|
|
|
|
|
|
|
|
-private='var1,var2' List of variables to mark as sensitive in Atlas UI.
|
|
|
|
|
|
|
|
|
|
-var 'key=value' Variable for templates, can be used multiple times.
|
|
|
|
|
|
|
|
|
|
-var-file=path JSON file containing user variables.
|
|
|
|
|
@ -346,12 +357,19 @@ func (c *PushCommand) upload(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Build the BuildVars struct
|
|
|
|
|
|
|
|
|
|
buildVars := atlas.BuildVars{}
|
|
|
|
|
for k, v := range opts.Vars {
|
|
|
|
|
isSensitive := false
|
|
|
|
|
for _, sensitiveVar := range opts.PrivVars {
|
|
|
|
|
if string(sensitiveVar) == string(k) {
|
|
|
|
|
isSensitive = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buildVars = append(buildVars, atlas.BuildVar{
|
|
|
|
|
Key: k,
|
|
|
|
|
Value: v,
|
|
|
|
|
Key: k,
|
|
|
|
|
Value: v,
|
|
|
|
|
Sensitive: isSensitive,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -384,6 +402,7 @@ type uploadOpts struct {
|
|
|
|
|
Builds map[string]*uploadBuildInfo
|
|
|
|
|
Metadata map[string]interface{}
|
|
|
|
|
Vars map[string]string
|
|
|
|
|
PrivVars []string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type uploadBuildInfo struct {
|
|
|
|
|
|