date=$(date +%Y-%m-%d)
#### REVIEW this carefully
-cvstag=planetlab-4_0-rc3
+# to be provided on the command line
+#cvstag=planetlab-4_0-rc3
####
svn="svn+ssh://thierry@svn.one-lab.org/svn"
cvs=":pserver:anon@cvs.planet-lab.org:/cvs"
function message () {
- echo -n '-------------------- '
- echo $@
- echo -n 'Enter return to proceed .. '
- read x
+ echo '===' $@
}
function run () {
- echo -n '-------------------- '
- message="$1" ; shift
- echo $message
-
- echo -n 'PWD=' ; pwd
- echo RUNNING $@
- $@
+ message="$1" ; shift
+ echo '===' $message
+
+ echo "= In $(pwd)"
+ echo RUNNING $@
+ $@
}
+# returns 1 for true and 0 for no
+function my_prompt () {
+ default="$1" ; shift
+ question="$@" ; shift
+ case "$default" in
+ y|Y) label="[y]/n" ; retcod=1 ;;
+ n|N) label="y/[n]" ; retcod=0 ;;
+ *) label="y/n (no default)" ;;
+ esac
+
+ while true; do
+ echo "= In $(pwd)"
+ echo -n "$question $label ? "
+ read answer
+ case $answer in
+ y|Y)
+ return 1 ; break ;;
+ n|N)
+ return 0 ; break ;;
+ '')
+ return $retcod ; break ;;
+ *)
+ echo 'Please enter y or n' ;;
+ esac
+ done
+}
+
function run_prompt () {
- default="$1" ; shift
- message="$1" ; shift
- case "$default" in
- y|Y) label="[y]/n" ;;
- n|N) label="y/[n]" ;;
- *) label="y/n (no default)" ;;
- esac
-
- echo -n '-------------------- '
- echo $message
-
- echo -n 'PWD= ' ; pwd
- echo -n "want to run $@ $label ? "
- read answer
- [ -z "$answer" ] && answer=$default
- while true; do
- case $answer in
- y|Y)
+ default="$1" ; shift
+ message="$1" ; shift
+ prompt_message="want to run $@"
+
+ echo "===" $message
+ my_prompt "$default" "$prompt_message"
+ if [ "$?" == 1 ] ; then
$@
- break
- ;;
- n|N)
+ else
echo 'Skipped'
- break
- ;;
- *)
- echo 'Please enter y or n'
- ;;
- esac
- done
+ fi
}
function run_loop () {
- message="$1" ; shift
- while true; do
- echo -n '-------------------- '
- echo $message
- echo -n PWD= ; pwd
- echo Running $@
- $@
- echo -n 'OK ? y/[n] '
- read answer
- [ -z "$answer" ] && answer=n
- case $answer in
- y|Y)
- break ;;
- *) ;;
- esac
-done
+ default=$1; shift
+ message="$1" ; shift
+ while true; do
+ echo '===' $message
+ echo "= In $(pwd)"
+ echo Running $@
+ $@
+ my_prompt $default "OK"
+ if [ "$?" == 1 ] ; then
+ break
+ fi
+ done
}
### echoes OK on stdout if url exists
function svn_url_check () {
- url=$1; shift
- svn list $url &> /dev/null && echo OK
+ url=$1; shift
+ svn list $url &> /dev/null && echo OK
}
### return 'y' or 'n' for being used as prompt
function svn_url_needs_creation () {
- url=$1; shift
- if [ -n "$(svn_url_check $url)" ] ; then echo n ; else echo y ; fi
+ url=$1; shift
+ if [ -n "$(svn_url_check $url)" ] ; then echo n ; else echo y ; fi
}
function dir_needs_creation () {
- dir=$1; shift
- if [ -d "$dir" ] ; then echo n ; else echo y ; fi
+ dir=$1; shift
+ if [ -d "$dir" ] ; then echo n ; else echo y ; fi
}
function svn_dir_needs_revert () {
- dir=$1; shift
- output=$(svn status $dir 2>&1)
- if [ -n "$output" ] ; then echo y ; else echo n ; fi
+ dir=$1; shift
+ output=$(svn status $dir 2>&1)
+ if [ -n "$output" ] ; then echo y ; else echo n ; fi
}
function svn_file_needs_commit () {
- dir=$1; shift
- output=$(svn status $dir 2>&1)
- if [ -n "$output" ] ; then echo y ; else echo n ; fi
+ dir=$1; shift
+ output=$(svn status $dir 2>&1)
+ if [ -n "$output" ] ; then echo y ; else echo n ; fi
}
##############################
else
nbspecs=$(ls $src/*.spec | wc -l)
if [ $nbspecs = 1 ] ; then
- echo $(ls $src/*.spec)
+ echo $(ls $src/*.spec)
else
echo "$0: could not guess spec file in $src"
exit 1
specfile=$1; shift
varname=$1; shift
if [ ! -f $specfile ] ; then
- echo "Could not locate $specfile -- exiting"
- exit 1
+ echo "Could not locate $specfile -- exiting"
+ exit 1
fi
line=$(grep "^%define[ \t][ \t]*$varname" $specfile)
value=$(echo $line | sed -e "s,%define[ \t][ \t]*$varname[ \t][ \t]*,,")
========== Your input :
module=$module
-========== Hard-wired :
cvstag=$cvstag
+========== Hard-wired :
svn=$svn
cvs=$cvs
========== Computed :
}
function run_test () {
- message Hi there
- run_prompt n "going to /etc" cd /etc
- run_prompt y "going to /etc" cd /etc
- run_prompt y "Cleaning up /foobar" rmdir /foobar
- run_prompt $(dir_needs_creation /foobar) "create unexisting dir /foobar" mkdir /foobar
- run_prompt $(dir_needs_creation /var) "create existing dir /var" mkdir /var
- run_prompt y "Cleaning up /foobar" rmdir /foobar
-
- run_loop "Check this and that" ls -ls passwd
- run "Listing passwd" ls -ls passwd
- exit 0
+ message Hi there
+ run_prompt n "going to /etc" cd /etc
+ run_prompt y "going to /etc" cd /etc
+ run_prompt y "Cleaning up /foobar" rmdir /foobar
+ run_prompt $(dir_needs_creation /foobar) "create unexisting dir /foobar" mkdir /foobar
+ run_prompt $(dir_needs_creation /var) "create existing dir /var" mkdir /var
+ run_prompt y "Cleaning up /foobar" rmdir /foobar
+
+ run_loop y "Check this and that" ls -ls passwd
+ run "Listing passwd" ls -ls passwd
+ exit 0
}
function figure_last_import () {
}
function import_usage () {
- echo "Usage: $0 module"
+ echo "Usage: $0 module tag"
echo "All other parameters to be entered in the source file for now - sorry"
exit 1
}
[[ -z "$@" ]] && import_usage
module=$1; shift
- import=$HOME/import-$module-$date
+ [[ -z "$@" ]] && import_usage
+ cvstag=$1; shift
[[ -n "$@" ]] && import_usage
+ import=$HOME/import-$module-$date
echo -n 'Figuring previous import ..'
previous=$(figure_last_import $module)
run "Going to import-$next" \
cd $import/$module/imports/import-$next
- run_loop "Check the changes in import-$next -- no conflict expected" \
+ run_loop n "Check the changes in import-$next -- no conflict expected" \
svn status $import/$module/imports/import-$next
run_prompt n "CHECKING IN imported changes in import-$next" \
run_prompt n "Merging changes from import-$previous to import-$next into trunk" \
svn merge $svn/$module/imports/import-$previous $svn/$module/imports/import-$next trunk
- run_loop "CHECK CHANGES in $import/$module/trunk -- conflicts should get resolved" \
+ run_loop n "CHECK CHANGES in $import/$module/trunk -- conflicts should get resolved" \
svn status trunk
run_prompt n "CHECKING IN changes in trunk" \
echo -n "Checking tags status ..."
old_check=$(svn_url_check $oldtag)
if [ -z "$old_check" ] ; then
- echo "Former tag does not exist -- exiting"
- echo "URL was $oldtag"
- exit 1
+ echo "Former tag does not exist -- exiting"
+ echo "URL was $oldtag"
+ exit 1
fi
echo -n " old tag OK ... "
new_check=$(svn_url_check $newtag)
if [ -n "$new_check" ] ; then
- echo "New tag does exist -- exiting"
- echo "URL was $newtag"
- exit 1
+ echo "New tag does exist -- exiting"
+ echo "URL was $newtag"
+ exit 1
fi
echo " new tag OK"
patch_in_spec $spec subversion $newsubversion
- run_loop "Checking differences" \
+ run_loop y "Checking differences" \
svn diff $tagtrunk
- run_prompt y "Display differences from previous tag" \
+ run_prompt n "Display differences from previous tag" \
svn diff $oldtag $svn/$module/trunk
run_prompt y "Committing changes in $tagtrunk" \
run "cd $tagbuild" \
cd $tagbuild
+ # committing tags files
+ files_to_commit=""
for tagsmk in *-tags.mk; do
- echo "Managing $tagsmk"
+ echo "=== Managing $tagsmk"
sed -i -e "s,$oldname,$newname,g" $tagsmk
if [ $(svn_file_needs_commit $tagsmk) = "y" ] ; then
echo "Changes in $tagsmk"
svn diff $tagsmk
- run_prompt y "Adopt $newname in $tagsmk " \
- svn commit -m"Adopting-$newname" $tagsmk
+ my_prompt y "Adopt $newname in $tagsmk"
+ if [ "$?" == 1 ] ; then
+ files_to_commit="$files_to_commit $tagsmk"
+ fi
fi
done
+ if [ -n "$files_to_commit" ] ; then
+ command="svn commit -mAdopting-$newname $files_to_commit"
+ run "Committing selected tags files" $command
+ fi
}
####################
*diff-module*)
diff_modules $@ ;;
*test*)
- x=$(figure_module_spec $@) ; echo $x;;
+# my_prompt $@ ; echo "result=$?";;
+ run_test ;;
*)
echo "Unsupported command $0" ; exit 0
esac