-
-
Notifications
You must be signed in to change notification settings - Fork 3
Description
-
Implement
OptionParser.Separator()to be able to insert stuff in the--helpoutput programmatically (e.g., newlines). See the Ruby doc. -
I have a program (called
opt) that validates a shell script command line against specification provided in a JSON file. Here's a snippet:
{
"xyzzy": {
"short": "x",
"desc": "Set the xyzzy",
"type": "range",
"value": "0..5",
"default": 3
}
}
This specification defines -x, --xyzzy as a range. The value of -r, --range must be an integer in the range (0..5) with a default of 3.
I use ParseFrom() to supply the shell script command line to my Go program (via the OptionParser.Extra data). I have a command line flag on my Go program that sets the script name:
opt -f jsonfile.json -n scriptName -- --the script --args
Hopefully, you get the idea...
Lets say that I supply an non-existent argument as part of the Extra(); e.g.
opt -f jsonfile.json -n scriptName -- --the script --args --nonexistent
The map sent to ParseFrom() is [scriptHame --the script --args --nonexistent]. I have a couple of lines of code to ensure that the first item in the map is scriptName.
ParseFrom() generates the appropriate error (as it should):
opt: unknown option nonexistent
I would like this message to be:
scriptName: unknown option nonexistent
So, in a nutshell, if you parse args with ParseFrom(foo), any error messages that ParseFrom() generates should use foo[0] as the program name.
I hope this is clear. Please reply if you have questions.
Thanks in advance...
P.S. It's a simple matter to make foo[0] the program name:
foo := op.Extra
foo = append([]string{"scriptName"}, foo...)
If op.Extra has [--the script --args --nonexistent], foo will have [scriptHame --the script --args --nonexistent].