Skip to content

Commit 64b7f31

Browse files
committed
Validate format flag in PreRun
Signed-off-by: Lucas Bremgartner <[email protected]>
1 parent 56242d6 commit 64b7f31

File tree

7 files changed

+55
-6
lines changed

7 files changed

+55
-6
lines changed

cmd/migration-manager/cmds/batch.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,10 @@ func (c *cmdBatchList) Command() *cobra.Command {
179179
`
180180

181181
cmd.RunE = c.Run
182-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
182+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
183+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
184+
return validateFlagFormat(cmd.Flag("format").Value.String())
185+
}
183186

184187
return cmd
185188
}

cmd/migration-manager/cmds/instance.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ func (c *cmdInstanceList) Command() *cobra.Command {
6060
`
6161

6262
cmd.RunE = c.Run
63-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
63+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
6464
cmd.Flags().BoolVarP(&c.flagVerbose, "verbose", "", false, "Enable verbose output")
65+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
66+
return validateFlagFormat(cmd.Flag("format").Value.String())
67+
}
6568

6669
return cmd
6770
}

cmd/migration-manager/cmds/network.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ func (c *cmdNetworkList) Command() *cobra.Command {
125125
`
126126

127127
cmd.RunE = c.Run
128-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
128+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
129+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
130+
return validateFlagFormat(cmd.Flag("format").Value.String())
131+
}
129132

130133
return cmd
131134
}

cmd/migration-manager/cmds/queue.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,11 @@ func (c *cmdQueueList) Command() *cobra.Command {
5353
`
5454

5555
cmd.RunE = c.Run
56-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
56+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
5757
cmd.Flags().BoolVarP(&c.flagVerbose, "verbose", "", false, "Enable verbose output")
58+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
59+
return validateFlagFormat(cmd.Flag("format").Value.String())
60+
}
5861

5962
return cmd
6063
}

cmd/migration-manager/cmds/source.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,10 @@ func (c *cmdSourceList) Command() *cobra.Command {
187187
`
188188

189189
cmd.RunE = c.Run
190-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
190+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
191+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
192+
return validateFlagFormat(cmd.Flag("format").Value.String())
193+
}
191194

192195
return cmd
193196
}

cmd/migration-manager/cmds/target.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,10 @@ func (c *cmdTargetList) Command() *cobra.Command {
183183
`
184184

185185
cmd.RunE = c.Run
186-
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", "Format (csv|json|table|yaml|compact)")
186+
cmd.Flags().StringVarP(&c.flagFormat, "format", "f", "table", `Format (csv|json|table|yaml|compact), use suffix ",noheader" to disable headers and ",header" to enable if demanded, e.g. csv,header`)
187+
cmd.PreRunE = func(cmd *cobra.Command, _ []string) error {
188+
return validateFlagFormat(cmd.Flag("format").Value.String())
189+
}
187190

188191
return cmd
189192
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cmds
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
)
7+
8+
func validateFlagFormat(value string) error {
9+
fields := strings.SplitN(value, ",", 2)
10+
format := fields[0]
11+
12+
var options []string
13+
if len(fields) == 2 {
14+
options = strings.Split(fields[1], ",")
15+
for _, option := range options {
16+
switch option {
17+
case "noheader", "header":
18+
default:
19+
return fmt.Errorf(`Invalid value for flag "--format": %q`, format)
20+
}
21+
}
22+
}
23+
24+
switch format {
25+
case "csv", "json", "table", "yaml", "compact":
26+
default:
27+
return fmt.Errorf(`Invalid value for flag "--format": %q`, format)
28+
}
29+
30+
return nil
31+
}

0 commit comments

Comments
 (0)