update: log_skip; simplify update_serial args; check_update tests for deps
authorTero Marttila <terom@paivola.fi>
Tue, 20 Mar 2012 12:19:16 +0200
changeset 564 baae373b787e
parent 563 d99ebc15833d
child 565 ef5bcc4145de
update: log_skip; simplify update_serial args; check_update tests for deps
bin/update
--- a/bin/update	Tue Mar 20 12:08:38 2012 +0200
+++ b/bin/update	Tue Mar 20 12:19:16 2012 +0200
@@ -43,7 +43,8 @@
 
 LOG_WARN=y
 LOG=y
-LOG_INFO=
+LOG_INFO=y
+LOG_SKIP=
 LOG_DEBUG=
 LOG_CMD=
 
@@ -103,7 +104,7 @@
                 LOG_WARN=
                 ;;
 
-            v)  LOG_INFO=y ;;
+            v)  LOG_SKIP=y ;;
             D)  
                 LOG_DEBUG=y
                 LOG_INFO=y
@@ -144,18 +145,18 @@
     local code=$1; shift
 
     if [ $IS_TTY ]; then
-        echo $'\e[0;'${code}'m'"$*"$'\e[00m' >&2
+        echo $'\e['${code}'m'"$*"$'\e[00m' >&2
     else
         echo "$*" >&2
     fi
 }
 
 function log_error {
-    log_color 31 "$*"
+    log_color '31' "$*"
 }
 
 function log_warn {
-    [ $LOG_WARN ] && log_color 33 "$*" || true
+    [ $LOG_WARN ] && log_color '33' "$*" || true
 }
 
 function log {
@@ -163,7 +164,11 @@
 }
 
 function log_info {
-    [ $LOG_INFO ] && log_color 36 "  $*" || true
+    [ $LOG_INFO ] && log_color '36' "  $*" || true
+}
+
+function log_skip {
+    [ $LOG_SKIP ] && log_color '1;34' "  $*" || true
 }
 
 function log_debug {
@@ -224,6 +229,15 @@
     return ${PIPESTATUS[0]}
 }
 
+function ensure_dir {
+    local dir=$1
+
+    if [ ! -d $ROOT/$dir ]; then
+        log_warn "Creating output dir: $dir"
+        cmd mkdir $ROOT/$dir
+    fi
+}
+
 function abspath () {
     echo "$ROOT/$1"
 }
@@ -286,8 +300,10 @@
         [ $update ] && continue
 
         # check
+        if [ ! -e $ROOT/$dep ]; then
+            fail "$dst: Missing source: $dep"
 
-        if [ $ROOT/$dst -ot $ROOT/$dep ]; then
+        elif [ $ROOT/$dst -ot $ROOT/$dep ]; then
             log_debug "  changed: $dep"
             update=y
         fi
@@ -329,6 +345,7 @@
 
 function update {
     local dst=$1; shift;
+    local msg=$1; shift
 
     local sep=
     local dep=()
@@ -348,7 +365,14 @@
 
     [ ! $sep ] && fail "Invalid args given: $@"
 
-    check_update $dst "${dep[@]}" && do_update $dst "${cmd[@]}" || true
+    if check_update $dst "${dep[@]}"; then
+        log_info "$msg..."
+
+        do_update $dst "${cmd[@]}"
+    else
+        log_debug "$msg: not changed"
+
+    fi
 }
 
 function check_link {
@@ -371,15 +395,13 @@
     local zone=$1
     local base=$2
 
-    log_debug "base: $base"
-
     if check_update $zone $base; then
         log_info "Copying hosts $zone <- $base..."
 
         do_update $zone \
             cat $ROOT/$base
     else
-        log_info "Copying hosts $zone <- $base: not changed"
+        log_skip "Copying hosts $zone <- $base: not changed"
     fi
 }
 
@@ -394,7 +416,7 @@
         do_update $zone \
             $BIN/process-zone $PROCESS_ARGS $ROOT/$base "$@"
     else
-        log_info "Generating hosts $zone <- $base: not changed"
+        log_skip "Generating hosts $zone <- $base: not changed"
     fi
 }
 
@@ -404,13 +426,15 @@
     local zone=$1; shift
     
     local serial=$SERIALS/$zone.serial
-    
+   
+    # read
     local old=$(test -e $ROOT/$serial && cat $ROOT/$serial || echo '')
 
     log_info "Updating $serial..."
 
-    cmd $BIN/update-serial $* $ROOT/$serial
+    cmd $BIN/update-serial $ROOT/$serial
     
+    # read
     local new=$(cat $ROOT/$serial)
         
     log_debug "  $old -> $new"
@@ -429,7 +453,7 @@
         do_link $lnk $tgt
 
     else
-        log_info "Linking $lnk -> $tgt: not changed"
+        log_skip "Linking $lnk -> $tgt: not changed"
     fi
 }
 
@@ -445,9 +469,10 @@
     if check_update $out $src; then
         log_info "Copying $out <- $src..."
 
-        do_update $out cat $ROOT/$src
+        do_update $out \
+            cat $ROOT/$src
     else
-        log_info "Copying $out <- $src: not changed"
+        log_skip "Copying $out <- $src: not changed"
     fi
 }
 
@@ -459,14 +484,10 @@
     local out=$ZONES/$view/$zone
     local src=$DATA/$base.zone
     local lnk=$ZONES/$base
+
     local serial=$SERIALS/$base.serial
 
-    log_debug "$out: from src $src"
-
-    if [ ! -e $src ]; then
-        fail "Missing source: $src"
-
-    elif check_update $out $src $serial; then
+    if check_update $out $src $serial; then
         log_info "Generating $out <- $src..." 
 
         do_update $out \
@@ -475,7 +496,7 @@
                 --expand zones=$(abspath $ZONES)    \
                 --expand view=$view
     else
-        log_info "Generating $out <- $src: not changed" 
+        log_skip "Generating $out <- $src: not changed" 
     fi
 }
 
@@ -485,19 +506,18 @@
     local base=${3:-$zone}
 
     local out=$ZONES/$view/$zone
-    
+   
+    # find tgt
     for tgt in $ZONES/$view/$base $ZONES/common/$base; do
         [ $tgt != $out ] && [ -e $tgt ] && break
     done
 
-    log_debug "$out: from "
-
     if check_link $out $tgt; then
         log_info "Linking $out -> $tgt..."
 
         do_link $out $tgt
     else
-        log_info "Linking $out -> $tgt: not changed"
+        log_skip "Linking $out -> $tgt: not changed"
     fi
 }
 
@@ -508,7 +528,7 @@
     local cmd=($BIN/process-zone $PROCESS_ARGS $ROOT/$hosts --check-hosts "$@")
 
     if "${cmd[@]}" -q; then
-        log_info "Check $hosts: OK"
+        log_skip "Check $hosts: OK"
     else
         log_error "  Check $hosts: Failed"
 
@@ -530,7 +550,7 @@
     # test
     # XXX: checkzone is very specific about the order of arguments, -q must be first
     if $NAMED_CHECKZONE -q $origin $ROOT/$src; then
-        log_info "Check $src ($origin): OK"
+        log_skip "Check $src ($origin): OK"
     else
         log_error "  Check $src ($origin): Failed:"
 
@@ -561,15 +581,6 @@
     fi
 }
 
-function ensure_dir {
-    local dir=$1
-
-    if [ ! -d $ROOT/$dir ]; then
-        log_warn "Creating output dir: $dir"
-        cmd mkdir $ROOT/$dir
-    fi
-}
-
 function main {
     # test tty
     [ -t 1 ] && IS_TTY=y