# HG changeset patch # User Tero Marttila # Date 1411064003 -10800 # Node ID 889ecd6dcb4e203de06de3b1388f76b11a6b49c9 # Parent 44c32fd60997be557531c8e445cd631a6e0c8365 split LOG_* and UPDATE_* from lib/update.args into lib/update.*; fixup check_link and do_link for relative targets diff -r 44c32fd60997 -r 889ecd6dcb4e bin/update --- a/bin/update Sat Apr 26 23:55:18 2014 +0300 +++ b/bin/update Thu Sep 18 21:13:23 2014 +0300 @@ -102,6 +102,8 @@ ## Main entry point function main { + log_init + parse_args "$@" ## Input dirs diff -r 44c32fd60997 -r 889ecd6dcb4e lib/update.args --- a/lib/update.args Sat Apr 26 23:55:18 2014 +0300 +++ b/lib/update.args Thu Sep 18 21:13:23 2014 +0300 @@ -3,25 +3,7 @@ # # Command-line options -# use color output? -IS_TTY= - - ## Options -LOG_ERROR=y -LOG_WARN=y -LOG=y -LOG_FORCE=y -LOG_UPDATE=y -LOG_NOOP=y -LOG_SKIP= -LOG_DEBUG= -LOG_CMD= -LOG_DIFF=y - -UPDATE_FORCE= -UPDATE_NOOP= -UPDATE_DIFF= SERIAL_NOOP= SERIAL_FORCE= @@ -70,9 +52,6 @@ ## Parse any command-line arguments, setting the global options vars. function parse_args { - # test tty - [ -t 1 ] && IS_TTY=y - OPTIND=1 while getopts 'hd:qvDVpFSsnCcm:Rr' opt "$@"; do diff -r 44c32fd60997 -r 889ecd6dcb4e lib/update.log --- a/lib/update.log Sat Apr 26 23:55:18 2014 +0300 +++ b/lib/update.log Thu Sep 18 21:13:23 2014 +0300 @@ -3,6 +3,24 @@ # # Logging output +# use color output? +IS_TTY= + +LOG_ERROR=y +LOG_WARN=y +LOG=y +LOG_FORCE=y +LOG_UPDATE=y +LOG_NOOP=y +LOG_SKIP= +LOG_DEBUG= +LOG_CMD= +LOG_DIFF=y + +function log_init { + [ -t 1 ] && IS_TTY=y +} + # Output message to stderr. function log_msg { echo "$*" >&2 diff -r 44c32fd60997 -r 889ecd6dcb4e lib/update.updates --- a/lib/update.updates Sat Apr 26 23:55:18 2014 +0300 +++ b/lib/update.updates Thu Sep 18 21:13:23 2014 +0300 @@ -3,6 +3,10 @@ # # Dependency-based updates + utils +UPDATE_FORCE= +UPDATE_NOOP= +UPDATE_DIFF= + ## Compare the given output file with all given source files: # # check_update $out ${deps[@]} && do_update $out ... || ... @@ -95,12 +99,16 @@ # Tests if the symlink exists, and the target matches. # Fails if the target does not exist. function check_link { - local lnk="$1" + local out="$1" local tgt="$2" - [ ! -e "$tgt" ] && fail "$tgt: target does not exist" - - [ ! -e "$lnk" ] || [ $(readlink "$lnk") != "$tgt" ] + [ -e "$out" ] || return 1 + + [ -L "$out" ] || fail "$out: is not a link" + + [ "$(readlink "$out")" == "$tgt" ] || return 1 + + return 0 } ## Update symlink to point to target: @@ -108,10 +116,12 @@ # do_link $lnk $tgt # function do_link { - local lnk="$1" + local out="$1" local tgt="$2" - cmd ln -sf "$tgt" "$lnk" + cmd ln -sf "$tgt" "$out" + + [ -e "$out" ] || fail "$out: given target does not exist: $tgt" } ## Read include paths from file