1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-29 05:38:00 +00:00

* Create custom commit message template and populate it with the ports

to be removed, possibly with the expiration date and deprecated reason
* If port is not marked for expiration than put "Removed" in ports/MOVED
  entry instead of "Has expired"
* Implement -a option to remove all expired ports
* Ask if the cvs diff output should be recreated/reviewed again thus
  giving the committer a chance to edit files by hand and view diff
  results afterwards
* Cosmetic changes
This commit is contained in:
Vasil Dimov 2006-11-01 09:57:36 +00:00
parent 4363d55597
commit e1bcb99398
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=176028

View File

@ -100,6 +100,13 @@ mkcodir()
{
log "creating temporary directory"
d=`mktemp -d -t rmport`
mkdir ${d}/CVS
cat > ${d}/CVS/Repository <<REPOSITORY
We need ./CVS directory in order to create a custom commit message template
(and put it in ./CVS/Template). Anyway cvs insists on CVS/Repository existence
although it (hopefully) does not care about its contents.
REPOSITORY
touch ${d}/CVS/Template
log "created ${d}"
echo "${d}"
}
@ -145,7 +152,8 @@ check_dep()
# check if some Makefiles mention the port to be deleted
portdir_grep="^[^#].*/`basename ${catport}`([[:space:]]|/|$)"
r="`find ${PORTSDIR} -mindepth 2 -maxdepth 3 \( -name "Makefile*" -or -path "*Mk/*.mk" \) \
r="`find ${PORTSDIR} -mindepth 2 -maxdepth 3 \
\( -name "Makefile*" -or -path "*Mk/*.mk" \) \
|xargs grep -EH "${portdir_grep}" \
|grep -vE "^(${rmcatports})" || :`"
if [ -n "${r}" ] ; then
@ -162,7 +170,7 @@ check_dep()
break
fi
read -p 'deal with the above issues and hit <enter> when ready' answer
read -p 'deal with the above issues and hit <enter> when ready' dummy
done
}
@ -186,7 +194,7 @@ check_LEGAL()
msg="${catport}: checking if ${checkstr} is in ports/LEGAL"
log "${msg}"
while grep -i ${checkstr} ports/LEGAL ; do
read -p "${checkstr} is in ports/LEGAL, remove it and hit <enter> when ready" answer
read -p "${checkstr} is in ports/LEGAL, remove it and hit <enter> when ready" dummy
log "${msg}"
done
done
@ -213,7 +221,11 @@ edit_MOVED()
DEPRECATED="`make -C ${PORTSDIR}/${catport} -V DEPRECATED`"
DEPRECATED=${DEPRECATED:+: ${DEPRECATED}}
REASON="Has expired${DEPRECATED}"
if [ -n "`make -C ${PORTSDIR}/${catport} -V EXPIRATION_DATE`" ] ; then
REASON="Has expired${DEPRECATED}"
else
REASON="Removed${DEPRECATED}"
fi
log "${catport}: adding entry to ports/MOVED"
@ -244,6 +256,27 @@ rm_port()
${PCVS} rm `find ports/${catport} -type f -not -path "*/CVS/*" -delete -print`
}
append_Template()
{
catport=${1}
msg=${catport}
EXPIRATION_DATE=`make -C ${PORTSDIR}/${catport} -V EXPIRATION_DATE`
if [ -n "${EXPIRATION_DATE}" ] ; then
msg="${EXPIRATION_DATE} ${msg}"
fi
DEPRECATED="`make -C ${PORTSDIR}/${catport} -V DEPRECATED`"
if [ -n "${DEPRECATED}" ] ; then
msg="${msg}: ${DEPRECATED}"
fi
log "${catport}: adding entry to commit message template"
echo "${msg}" >> ./CVS/Template
}
# diff
diff()
{
@ -251,23 +284,34 @@ diff()
diffout=${codir}/diff
${PCVS} diff -u CVSROOT/modules ports/MOVED ports/LEGAL \
ports > ${diffout} 2>&1 || :
${PCVS} diff -u CVSROOT/modules ports > ${diffout} 2>&1 || :
read -p "hit <enter> to view cvs diff output" answer
read -p "hit <enter> to view cvs diff output" dummy
# give this to the outside world so it can be removed when we are done
# give this to the outside world so it can be showed to the committer
# and removed when we are done
echo ${diffout}
}
ask()
{
question=${1}
answer=x
while [ "${answer}" != "y" -a "${answer}" != "n" ] ; do
read -p "${question} [yn] " answer
done
echo ${answer}
}
# ask for confirmation and commit
commit()
{
read -p "do you want to commit? [yn] " answer
answer=`ask "do you want to commit?"`
if [ "${answer}" = "y" -o "${answer}" = "Y" ] ; then
${PCVS} ci CVSROOT/modules ports/MOVED ports/LEGAL \
ports
if [ "${answer}" = "y" ] ; then
${PCVS} ci CVSROOT/modules ports
fi
}
@ -280,6 +324,9 @@ cleanup()
rm ${diffout}
rm CVS/Entries.Log CVS/Repository CVS/Template
rmdir CVS
# release cvs directories
${PCVS} rel -d CVSROOT ports
@ -290,12 +337,19 @@ cleanup()
usage()
{
echo "Usage:" >&2
echo "" >&2
echo "find expired ports:" >&2
echo "${0} -F" >&2
echo "" >&2
echo "remove port(s):" >&2
echo "${0} category1/port1 [ category2/port2 ... ]" >&2
echo "" >&2
echo "remove all expired ports (as returned by -F):" >&2
echo "${0} -a" >&2
echo "" >&2
echo "just check dependencies:" >&2
echo "${0} -d category/port" >&2
exit 64
}
@ -322,6 +376,14 @@ if [ ${1} = "-F" ] ; then
exit
fi
if [ ${1} = "-a" ] ; then
if [ ${#} -ne 1 ] ; then
usage
fi
${0} `find_expired |cut -f 2 -d ' '`
exit
fi
codir=`mkcodir`
cd ${codir}
@ -334,7 +396,7 @@ for catport in $* ; do
port=`basename ${catport}`
# remove any trailing slashes
catport="${cat}/${port}"
pkgname=`pkgname ${cat}/${port}`
pkgname=`pkgname ${catport}`
check_dep ${catport} 1 "${*}"
@ -351,12 +413,22 @@ for catport in $* ; do
edit_Makefile ${cat} ${port}
rm_port ${catport}
append_Template ${catport}
done
diffout=`diff`
# give a chance to the committer to edit files by hand and recreate/review
# the diff afterwards
answer=y
while [ "${answer}" = "y" ] ; do
diffout=`diff`
# EDITOR instead of PAGER because vim has nice syntax highlighting ;-)
${EDITOR} ${diffout}
# EDITOR instead of PAGER because vim has nice syntax highlighting ;-)
${EDITOR} ${diffout}
echo "you can now edit files under ${codir}/ by hand"
answer=`ask "do you want to recreate the diff?"`
done
commit