-
Notifications
You must be signed in to change notification settings - Fork 36
Description
After considering the examples in the end, I wonder how the -mp
and -md
switches would be used if there were also required
switches. For example:
$ ./program --required1 'some text' --required2 'some numbers' -mp -md
IMHO, both switches have nothing to do with the "flow" of the program. They both are like -h
and -v
. They produce a result out of the scope of the main program. Both -mp
and -md
switches would be built-in like -h
and -v
taking the progname
from cli%init()
as file name and 1
or md
as file extensions.
If convenient, also two extra arguments manname
and mdname
would be added to cli%init()
in favour of freedom.
Hence, just typing
$ ./program -mp -md
w/o any required
switches will be more convenient and elegant.
Of course, current possibility of adding manually extra switches to get man page and markdown file names from CL are still available.
Tia
PS: Having default
text for each required
switch is not always convenient, especially in case a path is required; setting def = ''
requires extra condition to stop the execution of the program.
Examples
...
character(99) :: manpage !< Man page file name
character(99) :: markdown !< Markdown file name
call cli%init(...)
call cli%add(switch='--manpage', switch_ab='-mp', help='man page file name', required=.false., act='store', def='program.1')
call cli%add(switch='--markdown', switch_ab='-md', help='markdown file name', required=.false., act='store', def='program.md')
call cli%get(switch='-mp', val=manpage)
call cli%get(switch='-md', val=markdown)
call cli%save_man_page(man_file=trim(manpage))
call cli%save_usage_to_markdown(markdown_file=trim(markdown))
$ ./program -mp -md
OR
...
logical :: manpage !< Man page file name
logical :: markdown !< Markdown file name
call cli%init(...)
call cli%add(switch='--manpage', switch_ab='-mp', help='man page file name', required=.false., act='store_true', def='.false.')
call cli%add(switch='--markdown', switch_ab='-md', help='markdown file name', required=.false., act='store_true', def='.false.')
call cli%get(switch='-mp', val=manpage)
call cli%get(switch='-md', val=markdown)
if (man .eqv. .true) call cli%save_man_page(man_file='program.1')
if (md .eqv. .true) call cli%save_usage_to_markdown(markdown_file='program.md')
$ ./program -mp -md