@@ -10,7 +10,8 @@ import (
1010)
1111
1212const (
13- nameFlag = "name"
13+ nameFlag = "name"
14+ metadataFlag = "metadata"
1415)
1516
1617type 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