lib/lib.sh
author Tero Marttila <terom@paivola.fi>
Wed, 01 Feb 2012 15:53:27 +0200
changeset 30 574ac60e5a4b
parent 25 527d0fb0bdc4
permissions -rw-r--r--
use cmd_sudo
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
## library functions
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     3
LOG_DEBUG=
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     4
LOG_CMD=y
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     5
LOG_INFO=y
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     6
LOG_WARN=y
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     7
LOG_ERROR=y
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     8
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
     9
function log_debug () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    10
    [ $LOG_DEBUG ] && echo "... $@" >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    11
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    12
    return 0
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    13
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    14
8
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    15
function log_debugf () {
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    16
    local fmt=$1; shift 1
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    17
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    18
    [ $LOG_DEBUG ] && printf "... $fmt\n"  "$@"  >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    19
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    20
    return 0
8
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    21
}
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    22
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    23
function log_info () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    24
    [ $LOG_INFO ] && echo "--- $@" >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    25
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    26
    return 0
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    27
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    28
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    29
function log_cmd () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    30
    [ $LOG_CMD ] && echo ">>> $@" >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    31
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    32
    return 0
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    33
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    34
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    35
function log_warn () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    36
    [ $LOG_WARN ] && echo "XXX $@" >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    37
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    38
    return 0
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    39
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    40
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    41
function log_error () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    42
    [ $LOG_ERROR ] && echo "!!! $@" >&2
9
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    43
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    44
    return 0
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    45
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    46
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
function die () {
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    48
    log_error "$@"
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
    exit 1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
# Execute command verbosely, and exit on failure
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    54
CMD_MOCK=
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    55
CMD_PROMPT=y
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    56
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
function cmd () {
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    58
    log_cmd "$@"
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    60
    [ $CMD_MOCK ] && return 0
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
17
b120db777a60 lib.sh: don't use eval in cmd()
Tero Marttila <terom@fixme.fi>
parents: 15
diff changeset
    62
    "$@" # return $?
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    65
function cmd_confirm () {
10
2535c16e07a3 fix cmd_confirm
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    66
    [ $CMD_PROMPT ] && read -p "Confirm: $* ? "
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    67
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    68
    cmd "$@"
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    69
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    70
30
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    71
function cmd_sudo () {
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    72
    [ $CMD_PROMPT ] && read -p "Confirm: sudo: $* ? "
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    73
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    74
    cmd sudo -- "$@"
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    75
}
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    76
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    77
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
function expand_MB () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
    local size=${1^}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
    case ${size: -1} in 
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        G)
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
            size=$(( ${size%G} * 1024))
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
            ;;
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    esac
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
    echo $size
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
function extract_iso () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
    iso=$1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
    dst=$2
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
    [ ! -r "$iso" ] && die "Given .iso is not readable: $iso"
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
    [ -z "$dst" ] && die "Must give destination: $dst"
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
    [ -e "$dst" ] && die "Given destination already exists: $dst"
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
    # temporary mount
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
    mnt=$(mktemp -d mnt.XXXX)
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
    # clean on exit
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    function cleanup () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
        if mountpoint -q $mnt; then
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
           sudo umount $mnt
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
        fi
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
        [ -d $mnt ] && rmdir $mnt
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
        return $1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    }
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
    # loop-mount
30
574ac60e5a4b use cmd_sudo
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   114
    cmd_sudo mount -o loop $iso $mnt || cleanup 1
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
    # copy
11
8e5fce1229b6 fix extract_image/copy tree to copy symlinks with cp -rd - .iso halves is size
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
   117
    cmd cp -rd $mnt $dst || cleanup 1
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
    # done, cleanup
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
    cleanup 0
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
function my_md5sum () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
    /usr/bin/md5sum $1 | (
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
        read md5sum path
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
        echo $md5sum
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
    )
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   130
function expand_line () {
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   131
    local line=$1
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   132
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   133
    # evaluate {...} expressions
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   134
    # a slight hack, but it works \o/
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   135
    # http://stackoverflow.com/questions/415677/how-to-replace-placeholders-in-a-text-file/7633579#7633579
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   136
    line="${line//\\/\\\\}"
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   137
    line="${line//\"/\\\"}"
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   138
    line="${line//\`/\\\`}"
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   139
    line="${line//\$/\\\$}"
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   140
    line="${line//{/\${}"   # This is just for vim: } "
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   141
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   142
    # log_debug "($line)" >&2
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   143
    eval "echo \"$line\""
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   144
}
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   145
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   146
function expand_template () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
    local linecount=0
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
    # read in each line at a time
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
    while IFS='' read -r line; do
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
        linecount=$((linecount + 1))
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
        if [ "${line:0:1}" == "#" ]; then
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
            # ignore comments; pass through as-is
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
            echo "$line"
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
        
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
        else
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   158
            expand_line "$line" || die "Error at $tpl:$linecount: $line"
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
        fi
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
 
25
527d0fb0bdc4 refactor vars
Tero Marttila <terom@paivola.fi>
parents: 24
diff changeset
   161
    done
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   164
function expand_file () {
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   165
    local src=$1
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   166
    local dst=$2
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   167
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   168
    log_info "expand: file $src -> $dst"
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   169
25
527d0fb0bdc4 refactor vars
Tero Marttila <terom@paivola.fi>
parents: 24
diff changeset
   170
    expand_template < $src > $dst
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   171
}
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   172
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
# Recursive expand_template files from src -> dst
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
# XXX: not used
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
function expand_tree () {
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
    local src=$1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
    local dst=$2
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
    local filter=${3:-'*'}
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   180
    log_info "expand: tree $src/$filter -> $dst"
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   181
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   182
    [ ! -d $dst ] && cmd mkdir $dst
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   183
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
    for path in ${src}/${filter}; do
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
        local name=$(basename $path)
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
        local target=$dst/$name
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   188
        log_debug "expand_tree: $src: path=$path, name=$name, target=$target"
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   189
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
        if [ -d $path ]; then
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   191
            log_debug "expand_tree: $src: tree $name -> $target"
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   192
            expand_tree $path $target "$filter"
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   194
        elif [ -f $path ]; then
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   195
            log_debug "expand_tree: $src: file $name -> $target"
7
ab661ceed4dc pkvlm-create: logging and command-line options
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
   196
            expand_file $path $target
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198
        else
15
e3893b949972 implement preseed-files
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   199
            log_warn "expand_tree: $src: ignore $name"
1
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   200
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   201
        fi
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   202
    done
51b1db97f448 yay customized preseeds + functional pkvlm-create
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   203
}