@@ -79,6 +79,8 @@ Options:
79
79
with -A argument.
80
80
--debug Output extra parsing information for debugging.
81
81
Output cannot be used in bash eval.
82
+ -f, --function Return instead of exit. Useful inside shell
83
+ functions.
82
84
`
83
85
84
86
// testing trick, out can be mocked to catch stdout and validate
@@ -210,6 +212,12 @@ func (d *Docopts) Print_bash_global(args docopt.Opts) error {
210
212
var new_name string
211
213
var err error
212
214
var out_buf string
215
+ var var_format_str string = "%s=%s\n "
216
+ var output_format_str string = "%s"
217
+ if d .Exit_function {
218
+ var_format_str = "%s=%s "
219
+ output_format_str = "local %s"
220
+ }
213
221
214
222
varmap := make (map [string ]string )
215
223
@@ -241,11 +249,11 @@ func (d *Docopts) Print_bash_global(args docopt.Opts) error {
241
249
varmap [new_name ] = key
242
250
}
243
251
244
- out_buf += fmt .Sprintf ("%s=%s \n " , new_name , To_bash (args [key ]))
252
+ out_buf += fmt .Sprintf (var_format_str , new_name , To_bash (args [key ]))
245
253
}
246
254
247
255
// final output
248
- fmt .Fprintf (out , "%s" , out_buf )
256
+ fmt .Fprintf (out , output_format_str , out_buf )
249
257
250
258
return nil
251
259
}
@@ -414,6 +422,7 @@ func main() {
414
422
separator := arguments ["--separator" ].(string )
415
423
d .Mangle_key = ! arguments ["--no-mangle" ].(bool )
416
424
d .Output_declare = ! arguments ["--no-declare" ].(bool )
425
+ d .Exit_function = arguments ["--function" ].(bool )
417
426
global_prefix , err := arguments .String ("-G" )
418
427
if err == nil {
419
428
d .Global_prefix = global_prefix
0 commit comments