]> git.ozlabs.org Git - next-scripts/commitdiff
merge_old_version: shellcheck, update style, convert to posix shell script
authorStephen Rothwell <sfr@canb.auug.org.au>
Mon, 20 Mar 2023 23:17:20 +0000 (10:17 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 20 Mar 2023 23:17:20 +0000 (10:17 +1100)
merge_old_version

index c5975ecc75e5f150b4d86408fdd644021ec199e7..d94490482be3313a0e6d39ff0d7e9b9e6fad6898 100755 (executable)
@@ -1,10 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
 no_build=false
-[ "$1" = "-n" ] && {
+if [ "$1" = "-n" ]; then
        shift
        no_build=true
-}
+fi
 
 if [ "$1" ]; then
        tree=$1
@@ -19,90 +19,93 @@ else
        ver=$(git tag -l next-\* | sort | tail -n 1)
 fi
 
-. "$(dirname $0)/common.sh"
+tools_dir=$(dirname "$0")
+. "$tools_dir/common.sh"
 
 log()
 {
-       echo "$@" | tee -a $LOG_FILE
+       echo "$@" | tee -a "$LOG_FILE"
 }
 
 execute()
 {
-       log "$" $@
-       $@ 2>&1 | tee -a $LOG_FILE
-       return ${PIPESTATUS[0]}
+       log '$' "$@"
+       _out="$( "$@" 2>&1 )"
+       _err=$?
+       echo "$_out" | tee -a "$LOG_FILE"
+       return "$_err"
 }
 
-line="$(tail -n 1 $SHA1_FILE)"
+line="$(tail -n 1 "$SHA1_FILE")"
 
 # strip everything after the first tab character
 stree=${line%% *}
 if [ "$tree" ]; then
-       [ "$tree" = "$stree" ] || {
+       if [ "$tree" != "$stree" ]; then
                echo "That is not the last tree merged ($tree v $stree)" 1>&2
                exit 1
-       }
+       fi
 else
        tree="$stree"
 fi
 
-rev=$(git show ${ver}:Next/SHA1s | sed -n "s/^$tree\t\t*//p")
-[ "$rev" ] || {
+rev=$(git show "$ver:Next/SHA1s" | sed -n "s/^$tree\t\t*//p")
+if [ -z "$rev" ]; then
        echo "No previous tree/date ($tree/$ver)" 1>&2
        exit 1
-}
+fi
 
 bad_rev=$(git rev-parse --verify 'HEAD^2')
 
 tab="\t"
-[ $(echo "$tree" | wc -c) -le 8 ] && tab="\t\t"
+if [ "${#tree}" -lt 8 ]; then
+       tab="\t\t"
+fi
 
 # strip evrything up to the last tab character
 srev=${line##* }
-[ "$bad_rev" = "$srev" ] || {
+if [ "$bad_rev" != "$srev" ]; then
        echo "bad last line in $SHA1_FILE" 1>&2
        exit 1
-}
+fi
 
-GIT_EDITOR=: execute git reset --hard 'HEAD^' || {
+if ! execute git reset --hard 'HEAD^'; then
        echo "git reset failed" 1>&2
        bash -i || exit
-}
+fi
 
 log Merging "$ver version of $tree"
-execute git merge -m "$ver/$tree" "$rev" || {
+if ! execute git merge -m "$ver/$tree" "$rev"; then
        echo Merge failed 1>&2
        echo "$ver version of $tree" >>../merge.debug
        git diff >>../merge.debug 2>&1
-       git diff 2>&1 | egrep -q '<<<<<|^\*' && {
+       if git diff 2>&1 | grep -E -q '<<<<<|^\*'; then
                bash -i || exit
-       }
-       GIT_EDITOR=: execute git commit -v -a
+       fi
+       execute git commit --no-edit -v -a
        execute git diff -M --stat --summary 'HEAD^..'
-}
-[ -f "../merge-fixes/$tree" ] && {
-       for p in $(cat "../merge-fixes/$tree"); do
-               $(dirname $0)/merge_fix -n "$p" || {
+fi
+if [ -f "../merge-fixes/$tree" ]; then
+       while read -r p <&7; do
+               if ! "$bin_dir/merge_fix" -n "$p"; then
                        bash -i || exit
-               }
-       done
-}
-
-d=$(date --date "5 hours ago" '+%Y%m%d')
+               fi 7<&-
+       done 7<"../merge-fixes/$tree"
+fi
 
-sed -i '$d' $SHA1_FILE
-printf "%s$tab%s\n" $tree $rev >>$SHA1_FILE
+sed -i '$d' "$SHA1_FILE"
+printf "%s$tab%s\n" "$tree" "$rev" >>"$SHA1_FILE"
 
-git push -f "${build_host}${build_host:+:}${build_dir}" master:refs/heads/next || {
+if ! git push -f "${build_host}${build_host:+:}${build_dir}" master:refs/heads/next; then
        echo git push failed 1>&2
        bash -i || exit
-}
+fi
 
 $no_build && exit 0
 
-"$bin_dir/do_build" "$tree" || {
+if ! "$bin_dir/do_build" "$tree"; then
        echo Build failed 1>&2
        bash -i || exit
-}
+fi
 
 exit 0