@@ -73,9 +73,8 @@ func Run(ctx context.Context, cliargs []string) error {
73
73
}
74
74
75
75
c .SetVersionTemplate ("{{ .Name }} {{ .Version }}\n " )
76
- c .InitDefaultHelpCmd ()
77
76
c .SetArgs (cliargs [1 :])
78
- c .SilenceErrors , c . SilenceUsage = true , true
77
+ c .SilenceErrors = true
79
78
80
79
flags := c .Flags ()
81
80
flags .SortFlags = false
@@ -90,28 +89,35 @@ func Run(ctx context.Context, cliargs []string) error {
90
89
flags .VarP (filevar {& args .Out }, "out" , "o" , "output file" )
91
90
flags .BoolVarP (& args .ForcePassword , "password" , "w" , false , "force password prompt (should happen automatically)" )
92
91
flags .BoolVarP (& args .SingleTransaction , "single-transaction" , "1" , false , "execute as a single transaction (if non-interactive)" )
92
+
93
+ ss := func (v * []string , name , short , usage , placeholder string , vals ... string ) {
94
+ f := flags .VarPF (vs {v , vals , placeholder }, name , short , usage )
95
+ if placeholder == "" {
96
+ f .DefValue , f .NoOptDefVal = "true" , "true"
97
+ }
98
+ }
93
99
// set
94
- flags . VarP ( vs { & args .Variables , nil , "NAME=VALUE" }, " set" , "v" , `set variable NAME to VALUE (see \set command, aliases: --var --variable)` )
95
- flags . Var ( vs { & args .Variables , nil , "NAME=VALUE" } , "var " , "set variable NAME to VALUE" )
96
- flags . Var ( vs { & args .Variables , nil , "NAME=VALUE" } , "variable " , "set variable NAME to VALUE" )
100
+ ss ( & args .Variables , " set" , "v" , `set variable NAME to VALUE (see \set command, aliases: --var --variable)` , "NAME=VALUE" )
101
+ ss ( & args .Variables , "var" , "" , "set variable NAME to VALUE" , "NAME= VALUE" )
102
+ ss ( & args .Variables , "variable" , "" , "set variable NAME to VALUE" , "NAME= VALUE" )
97
103
// pset
98
- flags . VarP ( vs { & args .PVariables , nil , "VAR=ARG" }, " pset" , "P" , `set printing option VAR to ARG (see \pset command)` )
104
+ ss ( & args .PVariables , " pset" , "P" , `set printing option VAR to ARG (see \pset command)` , "VAR=ARG" )
99
105
// pset flags
100
- flags . VarP ( vs { & args .PVariables , [] string { "fieldsep=%q" , "csv_fieldsep=%q" }, "FIELD-SEPARATOR" }, " field-separator" , "F" , `field separator for unaligned and CSV output (default "|" and ",")` )
101
- flags . VarP ( vs { & args .PVariables , [] string { "recordsep=%q" }, "RECORD-SEPARATOR" }, " record-separator" , "R" , `record separator for unaligned and CSV output (default \n)` )
102
- flags . VarP ( vs { & args .PVariables , [] string { "tableattr=%q" }, "TABLE-ATTR" }, " table-attr" , "T" , "set HTML table tag attributes (e.g., width, border)" )
106
+ ss ( & args .PVariables , " field-separator" , "F" , `field separator for unaligned and CSV output (default "|" and ",")` , "FIELD-SEPARATOR" , "fieldsep=%q" , "csv_fieldsep=%q" )
107
+ ss ( & args .PVariables , " record-separator" , "R" , `record separator for unaligned and CSV output (default \n)` , "RECORD-SEPARATOR" , "recordsep=%q" )
108
+ ss ( & args .PVariables , " table-attr" , "T" , "set HTML table tag attributes (e.g., width, border)" , "TABLE-ATTR" , "tableattr=%q " )
103
109
// pset bools
104
- flags . VarPF ( vs { & args .PVariables , [] string { "format=unaligned" }, "" }, " no-align" , "A" , "unaligned table output mode" ). NoOptDefVal = "true"
105
- flags . VarPF ( vs { & args .PVariables , [] string { "format= html"} , "" }, "html" , " H" , "HTML table output mode" ). NoOptDefVal = "true"
106
- flags . VarPF ( vs { & args .PVariables , [] string { "tuples_only=on" }, "" }, " tuples-only" , "t" , "print rows only" ). NoOptDefVal = "true"
107
- flags . VarPF ( vs { & args .PVariables , [] string { "expanded=on" } , "" }, "expanded" , " x" , "turn on expanded table output" ). NoOptDefVal = "true"
108
- flags . VarPF ( vs { & args .PVariables , [] string { "fieldsep_zero=on" }, "" }, " field-separator-zero" , "z" , "set field separator for unaligned and CSV output to zero byte" ). NoOptDefVal = "true"
109
- flags . VarPF ( vs { & args .PVariables , [] string { "recordsep_zero=on" }, "" }, " record-separator-zero" , "0" , "set record separator for unaligned and CSV output to zero byte" ). NoOptDefVal = "true"
110
- flags . VarPF ( vs { & args .PVariables , [] string { "format= json"} , "" }, "json" , " J" , "JSON output mode" ). NoOptDefVal = "true"
111
- flags . VarPF ( vs { & args .PVariables , [] string { "format= csv"} , "" }, "csv" , " C" , "CSV output mode" ). NoOptDefVal = "true"
112
- flags . VarPF ( vs { & args .PVariables , [] string { "format= vertical"} , "" } , "vertical" , "G " , "vertical output mode" ). NoOptDefVal = "true"
110
+ ss ( & args .PVariables , " no-align" , "A" , "unaligned table output mode" , "" , "format=unaligned" )
111
+ ss ( & args .PVariables , " html" , "H" , "HTML table output mode" , "" , "format=html" )
112
+ ss ( & args .PVariables , " tuples-only" , "t" , "print rows only" , "" , "tuples_only=on" )
113
+ ss ( & args .PVariables , "expanded" , "x" , "turn on expanded table output" , "" , "expanded=on" )
114
+ ss ( & args .PVariables , " field-separator-zero" , "z" , "set field separator for unaligned and CSV output to zero byte" , "" , "fieldsep_zero=on" )
115
+ ss ( & args .PVariables , " record-separator-zero" , "0" , "set record separator for unaligned and CSV output to zero byte" , "" , "recordsep_zero=on" )
116
+ ss ( & args .PVariables , " json" , "J" , "JSON output mode" , "" , "format=json" )
117
+ ss ( & args .PVariables , " csv" , "C" , "CSV output mode" , "" , "format=csv" )
118
+ ss ( & args .PVariables , " vertical" , "G" , "vertical output mode " , "" , "format= vertical" )
113
119
// set bools
114
- flags . VarPF ( vs { & args .Variables , [] string { "QUIET=on" }, "" }, " quiet" , "q" , "run quietly (no messages, only query output)" ). NoOptDefVal = "true"
120
+ ss ( & args .Variables , " quiet" , "q" , "run quietly (no messages, only query output)" , "" , "QUIET=on" )
115
121
// add config
116
122
_ = flags .StringP ("config" , "" , "" , "config file" )
117
123
// manually set --version, see github.com/spf13/cobra/command.go
@@ -322,14 +328,14 @@ func (vs) String() string {
322
328
323
329
// Type satisfies the [pflag.Value] interface.
324
330
func (p vs ) Type () string {
325
- if p .IsBoolFlag () {
331
+ if p .isBool () {
326
332
return "bool"
327
333
}
328
334
return p .typ
329
335
}
330
336
331
- // IsBoolFlag satisfies the pflag.boolFlag interface.
332
- func (p vs ) IsBoolFlag () bool {
337
+ // isBool satisfies the pflag.boolFlag interface.
338
+ func (p vs ) isBool () bool {
333
339
return len (p .vals ) != 0 && ! strings .Contains (p .vals [0 ], "%" )
334
340
}
335
341
0 commit comments