lib/pvl/main.sh
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 21:17:06 +0200
changeset 736 75938aa0390b
parent 704 1d5625a944fe
permissions -rw-r--r--
pvl.hosts.interfaces: remove junos-specifics
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
    
676
775747ebdc45 lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents: 654
diff changeset
    21
    for module in ${MODULES[@]} $MAIN_MODULE; 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
676
775747ebdc45 lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents: 654
diff changeset
    33
        for module in ${MODULES[@]} $MAIN_MODULE; do
627
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
676
775747ebdc45 lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents: 654
diff changeset
    48
        for module in ${MODULES[@]} $MAIN_MODULE; 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
676
775747ebdc45 lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents: 654
diff changeset
    68
    for module in ${MODULES[@]} $MAIN_MODULE; do
627
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
654
8069b08e90ac bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents: 650
diff changeset
    72
    # initialize relative paths
704
1d5625a944fe update: pvl/main: fix cd SRV
Tero Marttila <tero.marttila@aalto.fi>
parents: 676
diff changeset
    73
    [ -n "$SRV" ] && cd $SRV
654
8069b08e90ac bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents: 650
diff changeset
    74
676
775747ebdc45 lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents: 654
diff changeset
    75
    ${MAIN_MODULE}_main
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    76
}