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