lib/pvl/main.sh
author Tero Marttila <tero.marttila@aalto.fi>
Fri, 27 Feb 2015 17:42:35 +0200
changeset 649 88ff10dae514
parent 628 b10ad946d01d
child 650 c707c3ee8665
permissions -rw-r--r--
move module-loading out of bin/update into lib/pvl/main.sh
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     1
set -ue
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     2
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     3
shopt -s globstar nullglob
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     4
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
     5
. $LIB/pvl/$MODULE/$MODULE_MAIN.sh
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
     6
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
     7
module_main_modules=${MODULE_MAIN}_MODULES
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
     8
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
     9
MODULES=(${!module_main_modules})
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    10
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    11
for module in ${MODULES[@]}; do
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    12
    . $LIB/pvl/$module.sh
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    13
done
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    14
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    15
. $LIB/pvl/util.sh
628
b10ad946d01d update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents: 627
diff changeset
    16
. $LIB/pvl/list.sh
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    17
. $LIB/pvl/cmd.sh
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    18
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    19
function main_help {
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    20
    cat <<END
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    21
Usage: $0 [options]
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    22
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    23
General:
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    24
    -h      display this help text
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    25
END
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    26
    
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    27
    for module in ${MODULES[@]}; do
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    28
        func_test ${module}_help && ${module}_help
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    29
    done
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    30
}
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    31
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    32
function main_opts {
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    33
    local module=
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    34
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    35
    # build opts string
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    36
    local opts=$(
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    37
        echo -n 'h'
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    38
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    39
        for module in ${MODULES[@]}; do
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    40
            module_getopts=${module}_GETOPTS
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    41
            echo -n ${!module_getopts:-}
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    42
        done
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    43
    )
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    44
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    45
    local OPTIND
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    46
    while getopts "$opts" opt; do
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    47
        local opt_module=
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    48
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    49
        if [ "$opt" = 'h' ]; then
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    50
            main_help
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    51
            exit 0;
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    52
        fi
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    53
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    54
        for module in ${MODULES[@]}; do
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    55
            if func_test ${module}_opt && ${module}_opt $opt "${OPTARG:-}"; then
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    56
                opt_module=$module
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    57
            fi
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    58
        done
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    59
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    60
        if [ "$opt_module" ]; then
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    61
            continue
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    62
        else
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    63
            die "opt: $opt"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    64
        fi
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    65
    done
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    66
    shift $(($OPTIND - 1))
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    67
}
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    68
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    69
function main {
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    70
    local module=
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    71
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    72
    main_opts "$@"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    73
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    74
    for module in ${MODULES[@]}; do
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    75
        func_test ${module}_init && ${module}_init
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    76
    done
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    77
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    78
    func_test ${MODULE_MAIN}_init && ${MODULE_MAIN}_init
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    79
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    80
    ${MODULE_MAIN}_main
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    81
}
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    82
649
88ff10dae514 move module-loading out of bin/update into lib/pvl/main.sh
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    83
main "$@"