#! /bin/sh# Script to push docs from my development area to SourceForge, where the# update-docs.sh script unpacks them into their final destination.TARGETHOST=www.python.orgTARGETDIR=/usr/home/fdrake/tmpPKGTYPE="bzip" # must be one of: bzip, tar, zip ("tar" implies gzip)TARGET="$TARGETHOST:$TARGETDIR"ADDRESSES='python-dev@python.org doc-sig@python.org python-list@python.org'TOOLDIR="`dirname $0`"VERSION=`$TOOLDIR/getversioninfo`# Set $EXTRA to something non-empty if this is a non-trunk version:EXTRA=`echo "$VERSION" | sed 's/^[0-9][0-9]*\.[0-9][0-9]*//'`if echo "$EXTRA" | grep -q '[.]' ; then DOCLABEL="maintenance" DOCTYPE="maint"else DOCLABEL="development" DOCTYPE="devel"fiDOCTYPE_SPECIFIED=falseEXPLANATION=''ANNOUNCE=truegetopt -T >/dev/nullif [ $? -eq 4 ] ; then # We have a sufficiently useful getopt(1) implementation. eval "set -- `getopt -ssh m:p:qt:F: \"$@\"`"else # This version of getopt doesn't support quoting of long options # with spaces, so let's not rely on it at all. :fiwhile [ "$#" -gt 0 ] ; do case "$1" in -m) EXPLANATION="$2" shift 2 ;; -p) PKGTYPE="$2" shift 1 ;; -q) ANNOUNCE=false shift 1 ;; -t) DOCTYPE="$2" DOCTYPE_SPECIFIED=true shift 2 ;; -F) EXPLANATION="`cat $2`" shift 2 ;; --) shift 1 break ;; -*) echo "Unknown option: $1" >&2 exit 2 ;; *) break ;; esacdoneif [ "$1" ] ; then if [ "$EXPLANATION" ] ; then echo "Explanation may only be given once!" >&2 exit 2 fi EXPLANATION="$1" shiftfiSTART="`pwd`"MYDIR="`dirname $0`"cd "$MYDIR"MYDIR="`pwd`"if [ "$PKGTYPE" = bzip ] ; then PKGEXT=tar.bz2elif [ "$PKGTYPE" = tar ] ; then PKGEXT=tgzelif [ "$PKGTYPE" = zip ] ; then PKGEXT=zipelse echo 1>&2 "unsupported package type: $PKGTYPE" exit 2fi# switch to .../Doc/cd ..# If $DOCTYPE was not specified explicitly, look for .doctype in# .../Doc/ and use the content of that file if present.if $DOCTYPE_SPECIFIED ; then :elif [ -f .doctype ] ; then DOCTYPE="`cat .doctype`"fimake --no-print-directory ${PKGTYPE}html || exit $?PACKAGE="html-$VERSION.$PKGEXT"scp "$PACKAGE" tools/update-docs.sh $TARGET/ || exit $?ssh "$TARGETHOST" tmp/update-docs.sh $DOCTYPE $PACKAGE '&&' rm tmp/update-docs.sh || exit $?if $ANNOUNCE ; then sendmail $ADDRESSES <<EOFTo: $ADDRESSESFrom: "Fred L. Drake" <fdrake@acm.org>Subject: [$DOCLABEL doc updates]X-No-Archive: yesThe $DOCLABEL version of the documentation has been updated: http://$TARGETHOST/dev/doc/$DOCTYPE/$EXPLANATIONA downloadable package containing the HTML is also available: http://$TARGETHOST/dev/doc/python-docs-$DOCTYPE.$PKGEXTEOF exit $?fi
#! /bin/sh
# Script to push docs from my development area to SourceForge, where the
# update-docs.sh script unpacks them into their final destination.
TARGETHOST=www.python.org
TARGETDIR=/usr/home/fdrake/tmp
PKGTYPE="bzip" # must be one of: bzip, tar, zip ("tar" implies gzip)
TARGET="$TARGETHOST:$TARGETDIR"
ADDRESSES='python-dev@python.org doc-sig@python.org python-list@python.org'
TOOLDIR="`dirname $0`"
VERSION=`$TOOLDIR/getversioninfo`
# Set $EXTRA to something non-empty if this is a non-trunk version:
EXTRA=`echo "$VERSION" | sed 's/^[0-9][0-9]*\.[0-9][0-9]*//'`
if echo "$EXTRA" | grep -q '[.]' ; then
DOCLABEL="maintenance"
DOCTYPE="maint"
else
DOCLABEL="development"
DOCTYPE="devel"
fi
DOCTYPE_SPECIFIED=false
EXPLANATION=''
ANNOUNCE=true
getopt -T >/dev/null
if [ $? -eq 4 ] ; then
# We have a sufficiently useful getopt(1) implementation.
eval "set -- `getopt -ssh m:p:qt:F: \"$@\"`"
else
# This version of getopt doesn't support quoting of long options
# with spaces, so let's not rely on it at all.
:
fi
while [ "$#" -gt 0 ] ; do
case "$1" in
-m)
EXPLANATION="$2"
shift 2
;;
-p)
PKGTYPE="$2"
shift 1
;;
-q)
ANNOUNCE=false
shift 1
;;
-t)
DOCTYPE="$2"
DOCTYPE_SPECIFIED=true
shift 2
;;
-F)
EXPLANATION="`cat $2`"
shift 2
;;
--)
shift 1
break
;;
-*)
echo "Unknown option: $1" >&2
exit 2
;;
*)
break
;;
esac
done
if [ "$1" ] ; then
if [ "$EXPLANATION" ] ; then
echo "Explanation may only be given once!" >&2
exit 2
fi
EXPLANATION="$1"
shift
fi
START="`pwd`"
MYDIR="`dirname $0`"
cd "$MYDIR"
MYDIR="`pwd`"
if [ "$PKGTYPE" = bzip ] ; then
PKGEXT=tar.bz2
elif [ "$PKGTYPE" = tar ] ; then
PKGEXT=tgz
elif [ "$PKGTYPE" = zip ] ; then
PKGEXT=zip
else
echo 1>&2 "unsupported package type: $PKGTYPE"
exit 2
fi
# switch to .../Doc/
cd ..
# If $DOCTYPE was not specified explicitly, look for .doctype in
# .../Doc/ and use the content of that file if present.
if $DOCTYPE_SPECIFIED ; then
:
elif [ -f .doctype ] ; then
DOCTYPE="`cat .doctype`"
fi
make --no-print-directory ${PKGTYPE}html || exit $?
PACKAGE="html-$VERSION.$PKGEXT"
scp "$PACKAGE" tools/update-docs.sh $TARGET/ || exit $?
ssh "$TARGETHOST" tmp/update-docs.sh $DOCTYPE $PACKAGE '&&' rm tmp/update-docs.sh || exit $?
if $ANNOUNCE ; then
sendmail $ADDRESSES <<EOF
To: $ADDRESSES
From: "Fred L. Drake" <fdrake@acm.org>
Subject: [$DOCLABEL doc updates]
X-No-Archive: yes
The $DOCLABEL version of the documentation has been updated:
http://$TARGETHOST/dev/doc/$DOCTYPE/
$EXPLANATION
A downloadable package containing the HTML is also available:
http://$TARGETHOST/dev/doc/python-docs-$DOCTYPE.$PKGEXT
EOF
exit $?
fi