Page 1 of 1

Update to gb.args

Posted: Wednesday 24th February 2021 1:55am
by BruceSteers
Hi all.

I made some changes to gb.args that have now been merged to the master branch.

New features..

Args.Get() now has an additional final parameter "Default"
Args.Get(ShortName As String, LongName As String, Optional Description As String, Optional ArgName As String, Optional Default As String) As String

works just like Settings[Keyname,Default] and returns the given default string if not found.

Also it is now possible to override the -V --version and -h --help flags, meaning....

If you use Args.Has() to check for -V or -h between the calls to Arg.Begin and Args End then your call will override the default behaviour.

This could be useful if you want to customise the version string.
So you could do this...

Args.Begin

If Args.Has("v", "version", "my alternative version msg for help") Then

 Print Application.Version & Iif(bAppIsBeta, "(BETA)", "(STABLE)")

Endif

Args.End

Before I added the override you could still do that but help text would display both the default version help message and the custom one (although it would use the custom one it was confusing)

Now if -V Arg Has been checked the default message is suppressed.

The same goes for --help
If you use Args.Has() to check -h --help then the default help message is suppressed and you can display your own with the same method as -V above.
If you wish to display the original help message then you can do so with the following new command...

Args.HelpText(Optional PrintText As Boolean) As String

That command can be called any time after Args.Begin or after Args.End but not before Args.Begin
It returns the original --help message as a string and will Print it to stdout if the optional arg is true

Example...

Args.Begin

  If Args.Has("h", "help", "custom help") Then

    Print "I can add a message header to the help here....."

    Args.HelpText(True) ' Print the help message.

    Print "I can add a footer here..."

  Endif

Args.End

Hopefully that may be useful for others too.

All the best