lib/update.updates
author Tero Marttila <terom@paivola.fi>
Tue, 20 Mar 2012 14:25:05 +0200
changeset 56 12e098a732ed
parent 55 a2d87cfd77e4
child 60 b65ce9123039
permissions -rw-r--r--
README: docdoc
52
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
# vim: set ft=sh :
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
# Dependency-based updates + utils
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
## Compare the given output file with all given source files:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
#   check_update $out ${deps[@]} && do_update $out ... || ...
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
# Returns true if the output file needs to be updated.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
function check_update {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
    # target
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
    local out=$1; shift
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    debug "$out"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    # need update?
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    local update=
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    if [ ${#@} == 0 ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
        debug "  update: unknown deps"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
        update=y
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    elif [ ! -e $out ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
        debug "  update: dest missing"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
        update=y
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
        
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    elif [ $UPDATE_FORCE ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        debug "  update: forced"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
        update=y
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
    fi
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
    # check deps
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    for dep in "$@"; do
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
        # don't bother checking if already figured out
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
        [ $update ] && continue
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
        # check
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
        if [ ! -e $ROOT/$dep ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
            fail "$dst: Missing source: $dep"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
        elif [ $ROOT/$out -ot $ROOT/$dep ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
            debug "  update: $dep"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
            update=y
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
        else
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
            debug "  check: $dep"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
        fi
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
    done
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    [ ! $update ] && debug "  up-to-date"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    # return
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
    [ $update ]
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
## Generate updated output file from given command's stdout:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
#   do_update $out $BIN/cmd --args
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
# Writes output to a temporary .new file, optionally shows a diff of changes, and commits
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
# the new version to $out (unless noop'd).
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
function do_update {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
    local out=$1; shift
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
    local tmp=$out.new
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
    debug "$out"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    cmd "$@" > $ROOT/$tmp
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
    # compare
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
    if [ -e $ROOT/$out ] && [ $UPDATE_DIFF ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
        debug "  changes:"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
        # terse
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
        indent "        " diff --unified=1 $ROOT/$out $ROOT/$tmp || true
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
    fi
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
    
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
    # deploy
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
    if [ $UPDATE_NOOP ]; then
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
        # cleanup
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
        debug "  no-op"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
        cmd rm $ROOT/$tmp
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
    else
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
        # commit
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
        debug "  deploy"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
        cmd mv $ROOT/$tmp $ROOT/$out
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
    fi
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
## Look for a link target:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    91
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    92
#   find_link   $lnk    $tgt...
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    93
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
# Outputs the first given target to exist, skipping any that are the same as the given $lnk.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
# If no $tgt matches, outputs the last one, or '-'.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
function choose_link {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
    local lnk=$1; shift
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
    local tgt=-
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
    for tgt in "$@"; do
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
        [ $tgt != $out ] && [ -e $ROOT/$tgt ] && break
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
    done
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
    
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
    echo $tgt
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   108
## Compare symlink to target:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   109
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   110
#   check_link $lnk $tgt && do_link $lnk $tgt || ...
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   111
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
# Tests if the symlink exists, and the target matches.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   113
# Fails if the target does not exist.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
function check_link {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
    local lnk=$1
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
    local tgt=$2
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   117
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
    [ ! -e $ROOT/$tgt ] && fail "$tgt: target does not exist"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   119
    
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
    [ ! -e $ROOT/$lnk ] || [ $(readlink $ROOT/$lnk) != $ROOT/$tgt ]
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   121
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
## Update symlink to point to target:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   124
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   125
#   do_link $lnk $tgt
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   126
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   127
function do_link {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   128
    local lnk=$1
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   129
    local tgt=$2
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   130
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   131
    cmd ln -sf $ROOT/$tgt $ROOT/$lnk
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   132
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   133
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   134
## Update .serial number:
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   135
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   136
#   do_update_serial $serial
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
#
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   138
# Shows old/new serial on debug.
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   139
function do_update_serial {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   140
    local serial=$1
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   141
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   142
    # read
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
    local old=$(test -e $ROOT/$serial && cat $ROOT/$serial || echo '')
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   145
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   146
    cmd $BIN/update-serial $ROOT/$serial
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   147
    
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   148
    # read
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   149
    local new=$(cat $ROOT/$serial)
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   150
        
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   151
    debug "  $old -> $new"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   152
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   153
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   154
## Perform `hg commit` for $DATA
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   155
function do_commit {
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   156
    local msg=$1
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   157
55
a2d87cfd77e4 update: LOG_DIFF to fix -q
Tero Marttila <terom@paivola.fi>
parents: 52
diff changeset
   158
    [ $LOG_DIFF ] && indent "    " hg_diff
52
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   159
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   160
    hg_commit "$msg"
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   161
}
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   162
b68b8615c512 update: split out code into lib/update.foo
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   163