in internal/commands/interceptor/instance.go [101:150]
func parseInstanceList(required bool, idListFlagName, nameListFlagName, serviceIDFlagName string) func(*cli.Context) error {
return func(ctx *cli.Context) error {
idsArg := ctx.String(idListFlagName)
namesArgs := ctx.String(nameListFlagName)
serviceID := ctx.String(serviceIDFlagName)
if idsArg == "" && namesArgs == "" {
if required {
return fmt.Errorf(`either flags "--%s" or "--%s" must be given`, idListFlagName, nameListFlagName)
}
return nil
}
ids := strings.Split(idsArg, ",")
names := strings.Split(namesArgs, ",")
var sliceSize int
if l := len(ids); idsArg != "" && l != 0 {
sliceSize = l
} else {
sliceSize = len(names)
}
instanceIDSlice := make([]string, sliceSize)
instanceNameSlice := make([]string, sliceSize)
for i := 0; i < sliceSize; i++ {
id := ""
name := ""
if len(ids) > i {
id = ids[i]
}
if len(names) > i {
name = names[i]
}
id, name, err := encode(serviceID, nameListFlagName, id, name)
if err != nil {
return err
}
instanceIDSlice[i] = id
instanceNameSlice[i] = name
}
instanceIDSliceString := strings.Join(instanceIDSlice, ",")
instanceNameSliceString := strings.Join(instanceNameSlice, ",")
if err := ctx.Set(idListFlagName, instanceIDSliceString); err != nil {
return err
}
return ctx.Set(nameListFlagName, instanceNameSliceString)
}
}