@@ -3,8 +3,10 @@ package update
33import (
44 "context"
55 "fmt"
6+ "strings"
67
78 "github.com/spf13/cobra"
9+ "github.com/spf13/pflag"
810 intake "github.com/stackitcloud/stackit-sdk-go/services/intake/v1betaapi"
911 "github.com/stackitcloud/stackit-sdk-go/services/intake/v1betaapi/wait"
1012
@@ -97,12 +99,24 @@ func NewCmd(p *types.CmdParams) *cobra.Command {
9799 return cmd
98100}
99101
102+ type updateSecretFlag struct {
103+ pflag.Value
104+ }
105+
106+ func (f * updateSecretFlag ) Set (val string ) error {
107+ if strings .TrimSpace (val ) == "" {
108+ return nil
109+ }
110+ return f .Value .Set (val )
111+ }
112+
100113func configureFlags (cmd * cobra.Command , params * types.CmdParams ) {
101114 cmd .Flags ().Var (flags .UUIDFlag (), intakeIdFlag , "Intake ID" )
102115 cmd .Flags ().String (displayNameFlag , "" , "Display name" )
103116 cmd .Flags ().String (descriptionFlag , "" , "Description" )
104117 password := flags .SecretFlag (passwordFlag , params )
105- cmd .Flags ().Var (password , passwordFlag , password .Usage ())
118+ cmd .Flags ().Var (& updateSecretFlag {Value : password }, passwordFlag , password .Usage ())
119+ cmd .Flag (passwordFlag ).NoOptDefVal = " "
106120 cmd .Flags ().String (userTypeFlag , "" , "Type of user. One of 'intake' or 'dead-letter'" )
107121 cmd .Flags ().StringToString (labelsFlag , nil , `Labels in key=value format, separated by commas. Example: --labels "key1=value1,key2=value2".` )
108122
@@ -118,13 +132,18 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
118132 return nil , & cliErr.ProjectIdError {}
119133 }
120134
135+ var password * string
136+ if cmd .Flag (passwordFlag ).Changed {
137+ password = flags .SecretFlagToStringPointer (p , cmd , passwordFlag )
138+ }
139+
121140 model := & inputModel {
122141 GlobalFlagModel : globalFlags ,
123142 IntakeId : flags .FlagToStringValue (p , cmd , intakeIdFlag ),
124143 UserId : userId ,
125144 DisplayName : flags .FlagToStringPointer (p , cmd , displayNameFlag ),
126145 Description : flags .FlagToStringPointer (p , cmd , descriptionFlag ),
127- Password : flags . SecretFlagToStringPointer ( p , cmd , passwordFlag ) ,
146+ Password : password ,
128147 UserType : flags .FlagToStringPointer (p , cmd , userTypeFlag ),
129148 Labels : flags .FlagToStringToStringPointer (p , cmd , labelsFlag ),
130149 }
@@ -158,11 +177,16 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *intake.APIC
158177
159178func outputResult (p * print.Printer , model * inputModel , resp * intake.IntakeUserResponse ) error {
160179 return p .OutputResult (model .OutputFormat , resp , func () error {
180+ if resp == nil {
181+ p .Outputf ("Triggered update of Intake User for intake %q, but no user ID was returned.\n " , model .IntakeId )
182+ return nil
183+ }
184+
161185 operationState := "Updated"
162186 if model .Async {
163187 operationState = "Triggered update of"
164188 }
165- p .Outputf ("%s Intake User % s\n " , operationState , model .UserId )
189+ p .Outputf ("%s Intake User for intake %q. User ID: % s\n " , operationState , model .IntakeId , resp . Id )
166190 return nil
167191 })
168192}
0 commit comments