lib/pvl/apply/cmd.sh
author Tero Marttila <tero.marttila@aalto.fi>
Thu, 26 Feb 2015 22:36:05 +0200
changeset 628 b10ad946d01d
parent 627 a81206440be2
child 629 7214fe5c6fac
permissions -rw-r--r--
update: refactor into modularized lib/pvl/**.sh layout
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     1
## Generate updated output file from given command's stdout:
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     2
#
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     3
#   do_update $out $BIN/cmd --args
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     4
#
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     5
# Writes output to a temporary .new file, optionally shows a diff of changes, and commits
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     6
# the new version to $out (unless noop'd).
628
b10ad946d01d update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents: 627
diff changeset
     7
function apply_cmd {
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
    local out="$1"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     9
    local tmp="$out.new"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    10
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    11
    debug "$out"
628
b10ad946d01d update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents: 627
diff changeset
    12
    cmd "${@:2}" > "$tmp"
627
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    13
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    14
    # compare
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    15
    if [ -e "$out" -a -z "$APPLY_DIFF" ]; then
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    16
        debug "  changes:"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    17
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    18
        # terse
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    19
        indent "        " diff --unified=1 "$out" "$tmp" || true
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    20
    fi
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    21
    
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    22
    # deploy
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    23
    if [ "$APPLY" = 0 ]; then
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    24
        # cleanup
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    25
        debug "  no-op"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    26
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    27
        cmd rm "$tmp"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    28
    else
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    29
        # commit
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    30
        debug "  deploy"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    31
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    32
        cmd mv "$tmp" "$out"
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    33
    fi
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    34
}
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    35