--- 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