mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						||
# usage: ifchange target temporary
 | 
						||
 | 
						||
# Used in generating revision.h via Makefiles.
 | 
						||
 | 
						||
set -e
 | 
						||
timestamp=
 | 
						||
keepsuffix=
 | 
						||
empty=
 | 
						||
color=auto
 | 
						||
until [ $# -eq 0 ]; do
 | 
						||
    case "$1" in
 | 
						||
	--timestamp)
 | 
						||
	    timestamp=.
 | 
						||
	    ;;
 | 
						||
	--timestamp=*)
 | 
						||
	    timestamp=`expr \( "$1" : '[^=]*=\(.*\)' \)`
 | 
						||
	    ;;
 | 
						||
	--keep)
 | 
						||
	    keepsuffix=.old
 | 
						||
	    ;;
 | 
						||
	--keep=*)
 | 
						||
	    keepsuffix=`expr \( "$1" : '[^=]*=\(.*\)' \)`
 | 
						||
	    ;;
 | 
						||
	--empty)
 | 
						||
	    empty=yes
 | 
						||
	    ;;
 | 
						||
	--color)
 | 
						||
	    color=always
 | 
						||
	    ;;
 | 
						||
	--color=*)
 | 
						||
	    color=`expr \( "$1" : '[^=]*=\(.*\)' \)`
 | 
						||
	    ;;
 | 
						||
	--debug)
 | 
						||
	    set -x
 | 
						||
	    ;;
 | 
						||
	*)
 | 
						||
	    break
 | 
						||
	    ;;
 | 
						||
    esac
 | 
						||
    shift
 | 
						||
done
 | 
						||
 | 
						||
target="$1"
 | 
						||
temp="$2"
 | 
						||
if [ "$temp" = - ]; then
 | 
						||
    temp="tmpdata$$.tmp~"
 | 
						||
    cat > "$temp"
 | 
						||
    trap 'rm -f "$temp"' 0
 | 
						||
fi
 | 
						||
 | 
						||
msg_begin= msg_unchanged= msg_updated= msg_reset=
 | 
						||
if [ "$color" = always -o \( "$color" = auto -a -t 1 \) ]; then
 | 
						||
    msg_begin="["
 | 
						||
    case "`tput smso 2>/dev/null`" in
 | 
						||
	"$msg_begin"*m)
 | 
						||
	    if [ ${TEST_COLORS:+set} ]; then
 | 
						||
		msg_unchanged=`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"` || :
 | 
						||
		msg_updated=`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"` || :
 | 
						||
	    fi
 | 
						||
	    msg_unchanged="${msg_begin}${msg_unchanged:-32}m"
 | 
						||
	    msg_updated="${msg_begin}${msg_updated:-31;1}m"
 | 
						||
	    msg_reset="${msg_begin}m"
 | 
						||
	    ;;
 | 
						||
    esac
 | 
						||
    unset msg_begin
 | 
						||
fi
 | 
						||
 | 
						||
targetdir=
 | 
						||
case "$target" in */*) targetdir=`dirname "$target"`;; esac
 | 
						||
if [ -f "$target" -a ! -${empty:+f}${empty:-s} "$temp" ] || cmp "$target" "$temp" >/dev/null 2>&1; then
 | 
						||
    echo "$target ${msg_unchanged}unchanged${msg_reset}"
 | 
						||
    rm -f "$temp"
 | 
						||
else
 | 
						||
    echo "$target ${msg_updated}updated${msg_reset}"
 | 
						||
    [ x"${targetdir}" = x -o -d "${targetdir}" ] || mkdir -p "${targetdir}"
 | 
						||
    [ x"${keepsuffix}" != x -a -f "$target" ] && mv -f "$target" "${target}${keepsuffix}"
 | 
						||
    mv -f "$temp" "$target"
 | 
						||
fi
 | 
						||
 | 
						||
if [ -n "${timestamp}" ]; then
 | 
						||
    if [ x"${timestamp}" = x. ]; then
 | 
						||
	if [ x"$targetdir" = x ]; then
 | 
						||
	    timestamp=.time."$target"
 | 
						||
	else
 | 
						||
	    timestamp="$targetdir"/.time.`basename "$target"`
 | 
						||
	fi
 | 
						||
    fi
 | 
						||
    : > "$timestamp"
 | 
						||
fi
 |