Skip to content

Commit 74ebc51

Browse files
author
Devansh Thakur
committed
fix(intake/user): address review comments on user create and update
1 parent fadf239 commit 74ebc51

2 files changed

Lines changed: 34 additions & 3 deletions

File tree

‎internal/cmd/beta/intake/user/create/create.go‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command) (*inputModel, error) {
137137
Labels: flags.FlagToStringToStringPointer(p, cmd, labelsFlag),
138138
}
139139

140+
if model.Password == nil || *model.Password == "" {
141+
return nil, &cliErr.FlagValidationError{
142+
Flag: passwordFlag,
143+
Details: "password is required and cannot be empty",
144+
}
145+
}
146+
140147
p.DebugInputModel(model)
141148
return &model, nil
142149
}

‎internal/cmd/beta/intake/user/update/update.go‎

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package update
33
import (
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+
100113
func 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

159178
func 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

Comments
 (0)