Skip to content

Commit a574ef1

Browse files
cursoragentaltitude
andcommitted
feat: Add metadata flag to stack update command
Co-authored-by: salaun.clement <salaun.clement@gmail.com>
1 parent 47aee05 commit a574ef1

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

cmd/stack/update.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010
)
1111

1212
const (
13-
nameFlag = "name"
13+
nameFlag = "name"
14+
metadataFlag = "metadata"
1415
)
1516

1617
type StackUpdateStore struct {
@@ -46,6 +47,7 @@ func NewUpdateCommand() *cobra.Command {
4647
}),
4748
fctl.WithBoolFlag(unprotectFlag, false, "Unprotect stacks (no confirmation on write commands)"),
4849
fctl.WithStringFlag(nameFlag, "", "Name of the stack"),
50+
fctl.WithStringSliceFlag(metadataFlag, []string{""}, "Metadata to use"),
4951
fctl.WithController(NewStackUpdateController()),
5052
)
5153
}
@@ -57,10 +59,23 @@ func (c *StackUpdateController) Run(cmd *cobra.Command, args []string) (fctl.Ren
5759
store := fctl.GetOrganizationStore(cmd)
5860
c.profile = store.Config.GetProfile(fctl.GetCurrentProfileName(cmd, store.Config))
5961

62+
// Parse user-provided metadata
63+
userMetadata, err := fctl.ParseMetadata(fctl.GetStringSlice(cmd, metadataFlag))
64+
if err != nil {
65+
return nil, errors.Wrap(err, "parsing metadata")
66+
}
67+
68+
// Merge user metadata with protected metadata
6069
protected := !fctl.GetBool(cmd, unprotectFlag)
61-
metadata := map[string]string{
62-
fctl.ProtectedStackMetadata: fctl.BoolPointerToString(&protected),
70+
metadata := make(map[string]string)
71+
72+
// Add user metadata first
73+
for k, v := range userMetadata {
74+
metadata[k] = v
6375
}
76+
77+
// Add/override with protected metadata
78+
metadata[fctl.ProtectedStackMetadata] = fctl.BoolPointerToString(&protected)
6479

6580
stack, res, err := store.Client().GetStack(cmd.Context(), store.OrganizationId(), args[0]).Execute()
6681
if err != nil {

0 commit comments

Comments
 (0)