1#!/bin/sh 2 3# Import bmake 4 5ECHO= 6GIT=${GIT:-git} 7 8# For consistency... 9Error() { 10 echo ERROR: ${1+"$@"} >&2 11 exit 1 12} 13 14Cd() { 15 [ $# -eq 1 ] || Error "Cd() takes a single parameter." 16 cd $1 || Error "cannot \"cd $1\" from $PWD" 17} 18 19# Call this function and then follow it by any specific import script additions 20option_parsing() { 21 local _shift=$# 22 # Parse command line options 23 while : 24 do 25 case "$1" in 26 *=*) eval "$1"; shift;; 27 --) shift; break;; 28 -a) TARBALL=$2; shift 2;; 29 -n) ECHO=echo; shift;; 30 -P) PR=$2; shift 2;; 31 -r) REVIEWER=$2; shift 2;; 32 -u) url=$2; shift 2;; 33 -h) echo "Usage:"; 34 echo " "$0 '[-ahnPr] [TARBALL=] [PR=] [REVIEWER=]' 35 echo " "$0 '-a <filename> # (a)rchive' 36 echo " "$0 '-h # print usage' 37 echo " "$0 '-n # do not import, check only.' 38 echo " "$0 '-P <PR Number> # Use PR' 39 echo " "$0 '-r <reviewer(s) list> # (r)eviewed by' 40 echo " "$0 'PR=<PR Number>' 41 echo " "$0 'REVIEWER=<reviewer(s) list>' 42 exit 1;; 43 *) break;; 44 esac 45 done 46 return $(($_shift - $#)) 47} 48 49### 50 51option_parsing "$@" 52shift $? 53 54TF=/tmp/.$USER.$$ 55Cd `dirname $0` 56test -s ${TARBALL:-/dev/null} || Error need TARBALL 57here=`pwd` 58# thing should match what the TARBALL contains 59thing=`basename $here` 60 61case "$thing" in 62bmake) (cd .. && tar zxf $TARBALL);; 63*) Error "we should be in bmake";; 64esac 65 66VERSION=`grep '^_MAKE_VERSION' VERSION | sed 's,.*=[[:space:]]*,,'` 67 68rm -f *~ 69mkdir -p ../tmp 70 71# new files are handled automatically 72# but we need to rm if needed 73# FILES are kept sorted so we can determine what was added and deleted 74# but we need to take care dealing with re-ordering 75(${GIT} diff FILES | sed -n '/^[+-][^+-]/p'; \ 76 ${GIT} diff mk/FILES | sed -n '/^[+-][^+-]/s,.,&mk/,p' ) > $TF.diffs 77grep '^+' $TF.diffs | sed 's,^.,,' | sort > $TF.adds 78grep '^-' $TF.diffs | sed 's,^.,,' | sort > $TF.rms 79comm -13 $TF.adds $TF.rms > $TF.rm 80 81if [ -z "$ECHO" ]; then 82 test -s $TF.rm && xargs rm -f < $TF.rm 83 $GIT add -A 84 $GIT diff --staged | tee ../tmp/bmake-import.diff 85 echo "$GIT tag -a vendor/NetBSD/bmake/$VERSION" > ../tmp/bmake-post.sh 86 echo "After you commit, run $here/../tmp/bmake-post.sh" 87else 88 comm -23 $TF.adds $TF.rms > $TF.add 89 test -s $TF.rm && { echo Removing:; cat $TF.rm; } 90 test -s $TF.add && { echo Adding:; cat $TF.add; } 91 $GIT diff 92fi 93