lib/pvl/apply/cmd.sh
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 21:17:06 +0200
changeset 736 75938aa0390b
parent 671 72143af5afbd
permissions -rw-r--r--
pvl.hosts.interfaces: remove junos-specifics
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
671
72143af5afbd lib/pvl: pvl/apply: fix APPLY_DIFF
Tero Marttila <terom@paivola.fi>
parents: 629
diff changeset
    15
    if [ -e "$out" -a -n "$APPLY_DIFF" ]; then
627
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
629
7214fe5c6fac lib/pvl: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    19
        cmd_indent "        " diff --unified=1 "$out" "$tmp" || true
627
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
629
7214fe5c6fac lib/pvl: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents: 628
diff changeset
    30
        debug "  apply"
627
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