16.5.2 How to declare automatic script generation

When using the actions module we should add “standard” subcommands to access the automatic script generation. We can do it by plugging in the following actions declarations:

mbfl_declare_action_set HELP
mbfl_declare_action HELP HELP_USAGE NONE                        \
    usage                                                       \
    'Print the help screen and exit.'
mbfl_declare_action HELP HELP_PRINT_COMPLETIONS_SCRIPT NONE     \
    print-completions-script                                    \
    'Print the completions script for this program.'

mbfl_declare_action_set MAIN
mbfl_declare_action MAIN HELP HELP                              \
    help                                                        \
    'Help the user of this script.'

and add the following action functions:

declare -r COMPLETIONS_SCRIPT_NAMESPACE='p-mbfl-examples'

function script_before_parsing_options_HELP () {
    script_USAGE="usage: ${script_PROGNAME} help [action] [options]"
    script_DESCRIPTION='Help the user of this program.'
}
function script_action_HELP () {
    # By faking the  selection of the MAIN action: we  cause "mbfl_main_print_usage_screen_brief" to
    # print the main usage screen.
    mbfl_actions_fake_action_set MAIN
    mbfl_main_print_usage_screen_brief
}

function script_before_parsing_options_HELP_USAGE () {
    script_USAGE="usage: ${script_PROGNAME} help usage [options]"
    script_DESCRIPTION='Print the usage screen and exit.'
}
function script_action_HELP_USAGE () {
    if mbfl_wrong_num_args 0 $ARGC
    then
        # By faking the selection of  the MAIN action: we cause "mbfl_main_print_usage_screen_brief"
        # to print the main usage screen.
        mbfl_actions_fake_action_set MAIN
        mbfl_main_print_usage_screen_brief
    else
        mbfl_main_print_usage_screen_brief
        exit_because_wrong_num_args
    fi
}

function script_before_parsing_options_HELP_PRINT_COMPLETIONS_SCRIPT () {
    script_PRINT_COMPLETIONS="usage: ${script_PROGNAME} help print-completions-script [options]"
    script_DESCRIPTION='Print the command-line completions script and exit.'
}
function script_action_HELP_PRINT_COMPLETIONS_SCRIPT () {
    if mbfl_wrong_num_args 0 $ARGC
    then mbfl_actions_completion_print_script "$COMPLETIONS_SCRIPT_NAMESPACE" "$script_PROGNAME"
    else
        mbfl_main_print_usage_screen_brief
        exit_because_wrong_num_args
    fi
}

This document describes version 3.0.0-devel.9 of Marcos Bash Functions Library.