lib/pvl/main.sh
changeset 627 a81206440be2
child 628 b10ad946d01d
equal deleted inserted replaced
626:5cd99761fe4d 627:a81206440be2
       
     1 set -ue
       
     2 
       
     3 shopt -s globstar nullglob
       
     4 
       
     5 . $LIB/pvl/util.sh
       
     6 . $LIB/pvl/cmd.sh
       
     7 . $LIB/pvl/log.sh
       
     8 
       
     9 function main_help {
       
    10     cat <<END
       
    11 Usage: $0 [options]
       
    12 
       
    13 General:
       
    14     -h      display this help text
       
    15 END
       
    16     
       
    17     for module in ${MODULES[@]}; do
       
    18         ${module}_help
       
    19     done
       
    20 }
       
    21 
       
    22 function main_opts {
       
    23     local module=
       
    24 
       
    25     # build opts string
       
    26     local opts=$(
       
    27         echo -n 'h'
       
    28 
       
    29         for module in ${MODULES[@]}; do
       
    30             module_getopts=${module}_GETOPTS
       
    31             echo -n ${!module_getopts}
       
    32         done
       
    33     )
       
    34 
       
    35     local OPTIND
       
    36     while getopts "$opts" opt; do
       
    37         local opt_module=
       
    38 
       
    39         if [ "$opt" = 'h' ]; then
       
    40             main_help
       
    41             exit 0;
       
    42         fi
       
    43 
       
    44         for module in ${MODULES[@]}; do
       
    45             if ${module}_opt $opt "${OPTARG:-}"; then
       
    46                 opt_module=$module
       
    47             fi
       
    48         done
       
    49 
       
    50         if [ "$opt_module" ]; then
       
    51             continue
       
    52         else
       
    53             die "opt: $opt"
       
    54         fi
       
    55     done
       
    56     shift $(($OPTIND - 1))
       
    57 }
       
    58 
       
    59 function main {
       
    60     local module=
       
    61 
       
    62     main_opts "$@"
       
    63 
       
    64     for module in ${MODULES[@]}; do
       
    65         func_test ${module}_init && ${module}_init
       
    66     done
       
    67 
       
    68     ${MODULE}_main     
       
    69 }
       
    70