SF.net SVN: docutils:[9894 ] trunk/sandbox/infrastruct ure

grubert--- via Docutils-checkins <[email protected]>
Newsgroups gmane.text.docutils.cvs
Message-ID <[email protected]>
Revision: 9894
          http://sourceforge.net/p/docutils/code/9894
Author:   grubert
Date:     2024-08-13 11:08:12 +0000 (Tue, 13 Aug 2024)
Log Message:
-----------
move release.sh into attic
cleanup README a bit

Modified Paths:
--------------
    trunk/sandbox/infrastructure/README.rst

Added Paths:
-----------
    trunk/sandbox/infrastructure/attic/release.sh

Removed Paths:
-------------
    trunk/sandbox/infrastructure/release.sh

Modified: trunk/sandbox/infrastructure/README.rst
===================================================================
--- trunk/sandbox/infrastructure/README.rst	2024-08-13 11:07:40 UTC (rev 9893)
+++ trunk/sandbox/infrastructure/README.rst	2024-08-13 11:08:12 UTC (rev 9894)
@@ -43,15 +43,9 @@
       Allow release without testing, because tests must be done
       on more than one os.
 
-:`<release-test.sh>`_: The script to run tests at release time, extracted
-    from ``release.sh``.
-
 :`<uploaddocutils.sh>`_: Upload files to http://docutils.sf.net/tmp/
     using ``scp``, inserting the current date in the file name.
 
-:`<update-htmlfiles>`_: Used to initialise a docutils-update upload directory.
-    Generating html-files from txt-files first time.
-
 and are these used by anyone.
 
 :`<dbackport.sh>`_: Back-port changes from the trunk to the

Copied: trunk/sandbox/infrastructure/attic/release.sh (from rev 9893, trunk/sandbox/infrastructure/release.sh)
===================================================================
--- trunk/sandbox/infrastructure/attic/release.sh	                        (rev 0)
+++ trunk/sandbox/infrastructure/attic/release.sh	2024-08-13 11:08:12 UTC (rev 9894)
@@ -0,0 +1,460 @@
+#!/bin/bash
+
+# Author: Lea Wiemann
+# Contact: [email protected]
+# Revision: $Revision$
+# Date: $Date$
+# Copyright: This script has been placed in the public domain.
+
+# USAGE see: docutils/docs/dev/release.txt
+
+# must be run from docutils trunk/docutils, 
+# because HISTORY and RELEASE_NOTES.txt are modified.
+
+set -e
+
+function print_command()
+{
+    # Print "$@", quoting parameters containing spaces.
+    echo -n $
+    for param in "$@"; do
+        echo "$param" | grep -Fq ' ' && echo -n " '$param'" || echo -n " $param"
+    done
+}
+
+function run()
+{
+    # Print and run "$@".
+    print_command "$@"
+    echo
+    "$@"
+}
+
+function confirm()
+{
+    # Print, let the user confirm and run "$@".
+    echo 'Press enter to run (or enter anything to skip):'
+    print_command "$@"
+    read
+    test "$REPLY" && echo Skipped. || "$@"
+}
+
+function svn_up()
+{
+    if test $svn == svk; then
+        confirm svk sync "$depot"
+    fi
+    confirm $svn up
+}
+
+function checkin()
+{
+    # Parameters: log_message, file, file, file ...
+    log_message="$1"
+    shift
+    confirm $svn diff "$@"
+    confirm $svn ci -m "$log_prefix $log_message" "$@"
+}
+
+function set_ver()
+{
+    # Parameters: old_version new_version
+    shopt -s extglob
+    echo Determining list of files to be changed...
+    # BUG ls lists directories but does not descend
+    files="docutils/__init__.py setup.py `$svn ls test/functional/expected/ | sed 's|^|test/functional/expected/|'`"
+    echo "Now I'll change the version number to $2 in the following files:"
+    echo $files
+    echo
+    echo 'Press enter to proceed (or enter anything to skip)...'
+    read
+    if [ ! "$REPLY" ]; then
+        echo 'Modifying files with ed...'
+        old_ver_regex="`echo "$1" | sed 's/\./\\\\./g'`"
+        # "ed" returns an error code if there has been no substitution, so
+        # we temporarily deactivate exit-on-error.
+        set +e
+        for F in $files; do
+            (echo ",s/$old_ver_regex/$2/g"; echo 'wq') | ed "$F"
+        done
+        set -e
+    fi
+    echo
+    echo 'CAUTION: please look at the diffs carefully, for wrongly'
+    echo ' replaced embedded numbers.'
+    checkin "set version number to $2" $files
+}
+
+function usage()
+{
+    echo 'Usage:'
+    echo
+    echo '    release.sh new_version svn_version[:branch_version] [stage]'
+    echo
+    echo 'The following things will be done:'
+    echo
+    echo '* Change version number to new_version.  (stage 1)'
+    echo '* SVN-export, test, and release Docutils version new_version.  (stage 2)'
+    echo '* Change version number to svn_version.  (stage 3)'
+    echo
+    echo 'If stage is supplied (1, 2 or 3), only the specified stage will'
+    echo 'be executed.  Otherwise, it defaults to executing all stages.'
+    echo
+    echo 'Before doing dangerous things, you will be asked to press enter.'
+    echo
+    echo 'A maintenance branch called docutils-new_version will be created'
+    echo 'if branch_version is given.  The version number inside the'
+    echo 'maintenance branch will be set to branch_version.'
+    echo 
+    echo 'Access ssh,scp and sftp access to shell/frs.sourceforge.net'
+    echo 'must be configured.'
+    exit 1
+}
+
+function initialize()
+{
+    if [ "$#" -lt 2 ]; then
+        usage
+    fi
+    echo 'Initializing...'
+    python_versions='2.6 2.7'
+    for py_ver in $python_versions; do
+        echo -n "Checking for Python $py_ver (python$py_ver)... "
+        if ! echo 'print "OK"' | python$py_ver; then
+            echo "WARN: Python $py_ver (python$py_ver) not found."
+        fi
+    done
+    echo -n 'Clearing $PYTHONPATH... '
+    export PYTHONPATH=
+    echo 'done'
+    echo -n 'Checking whether we are in a working copy... '
+    if [ -f HISTORY.txt ]; then
+        echo yes
+    else
+        echo "no (HISTORY.txt doesn't exist)"
+        echo 'Aborting.'
+        echo 'Please cd to a working copy before running this script.'
+        exit 1
+    fi
+    echo -n 'Subversion binary to use: '
+    # TODO breaks for newer svn, .svn is in upper. is this for svk 
+    svn=svn
+    echo $svn
+    working_copy="`pwd -P`"
+    echo "Working copy: $working_copy"
+    svnurl="`$svn info . | grep ^URL: | sed 's/URL: //'`"
+    if test -z "$svnurl"; then
+        echo 'Unable to detect Subversion URL.  Aborting.'
+        exit 1
+    fi
+    echo "Subversion URL: $svnurl"
+    if ! echo "$svnurl" | grep -q 'branches\|trunk'; then
+        echo 'Subversion URL contains neither "branches" nor "trunk".'
+        echo 'Aborting.'
+        exit 1
+    fi
+    if test `uname` = "Darwin" ; then
+        svnroot="`echo "$svnurl" | sed -E 's/\/(branches|trunk).*//'`"
+    else
+        svnroot="`echo "$svnurl" | sed 's/\/\(branches\|trunk\).*//'`"
+    fi
+    echo "Subversion root URL: $svnroot"
+    if test "$svnurl" = "$svnroot"; then
+        echo 'Error: Subversion URL and Subversion root URL are the same.'
+        echo '  probably a MacOSX sed problem.'
+        exit 1
+    fi
+    echo -n 'Detecting current Docutils version... '
+    old_ver="`python -c 'import docutils; print docutils.__version__'`"
+    echo "$old_ver"
+    new_ver="$1"
+    # log_prefix is for SVN logs.
+    log_prefix="Release $new_ver:"
+    echo "New version number (for releasing): $new_ver"
+    svn_ver="$2"
+    if echo "$svn_ver" | grep -q :; then
+        # Split at colon: svn_ver:branch_ver
+        branch_ver="${svn_ver#*:}"
+        svn_ver="${svn_ver%:*}"
+    else
+        branch_ver=
+    fi
+    echo "New Subversion version number (after releasing): $svn_ver"
+    echo -n 'Create maintenance branch: '
+    if test "$branch_ver"; then
+        echo yes
+        echo "New version number on maintenance branch: $branch_ver"
+    else
+        echo no
+    fi
+    if test "$branch_ver"; then
+        echo -n 'Checking that we have a full checkout... '
+        if echo "$working_copy" | grep -q 'branches\|trunk'; then
+            echo OK
+        else
+            echo 'no'
+            echo 'Working copy path contains neither "branches" nor "trunk".'
+            echo 'You need a full checkout in order to branch.'
+            echo 'Aborting.'
+            exit 1
+        fi
+        wcroot="`echo "$working_copy" | sed 's/\/\(branches\|trunk\).*//'`"
+        echo "Working copy root: $wcroot"
+    fi
+    tarball=docutils-"$new_ver".tar.gz
+    echo "Tarball name: $tarball"
+    echo 'Initialization completed.'
+    echo
+}
+
+function test_tarball()
+{
+    # Assume we have the tarball in the current directory.
+    # Pass test number as first parameter.
+    echo 'Testing the release tarball.'
+    run mkdir tarball_test/
+    run cd tarball_test/
+    confirm tar xzvf "../$tarball"
+    echo
+    run cd docutils-"$new_ver"
+    echo 'Deleteing old installations. Installing the distribution.'
+    echo "WARN: might not find installation."
+    for py_ver in '"$python_versions"'; do
+        echo "python$py_ver install/update and test."
+        bash release-test.sh
+        echo "Enter to test next."
+        read
+    done
+}
+
+function upload_tarball()
+{
+    # Assume we have the tarball in the working area.
+    run cd "$working_area"
+    mkdir $new_ver
+    cp docutils-$new_ver.tar.gz $new_ver
+    cp docutils/RELEASE-NOTES.txt $new_ver
+    # README.txt would be displayed automatically on sf.
+    # BUG user grubert hardcoded
+    # short path  "/home/frs/project/docutils/docutils/" also exists
+    scp -r $new_ver grubert,[email protected]:/home/frs/project/d/do/docutils/docutils/
+    echo 'Upload completed.'
+}
+
+function upload_htdocs()
+{
+    # Assume we have the tarball in the working area.
+    run cd "$working_area"
+    echo "Upload htdocs for $new_ver"
+    run mkdir htdocs
+    run cd htdocs
+    confirm tar xzvf "../$tarball"
+    run cd docutils-"$new_ver"/tools/
+    echo "BUG no docutils installation left."
+    echo "DO NOT call manually in $(pwd)"
+    confirm ./buildhtml.py --local ..
+    confirm ./buildhtml.py ../docs
+    run cd ..
+    echo '$ find . -name test -type d -prune -o -name \*.css -print0 \
+        -o -name \*.html -print0 -o -name \*.txt -print0 \
+        | tar -cjvf docutils-docs.tar.bz2 -T - --null'
+    find . -name test -type d -prune -o -name \*.css -print0 \
+        -o -name \*.html -print0 -o -name \*.txt -print0 \
+        | tar -cjvf docutils-docs.tar.bz2 -T - --null
+    echo 'Upload docs to SF.net...'
+    echo 'Press enter (or enter anything to skip).'
+    read
+    if [ ! "$REPLY" ]; then
+       mkdir $new_ver
+       cd $new_ver
+       tar xjvf ../docutils-docs.tar.bz2
+	   cd ..
+	   chmod -R g+rw $new_ver
+	   scp -r -p -C $new_ver web.sourceforge.net:/home/groups/d/do/docutils/htdocs
+    fi
+}
+
+function create_maintenance_branch()
+{
+    echo 'Creating maintenance branch.'
+    branch_name="docutils-$new_ver"
+    echo "Branch name: $branch_name"
+    branch_url="$svnroot/branches/$branch_name"
+    echo "Branch URL: $branch_url"
+    confirm svn cp "$svnurl" "$branch_url" -m \
+        "$log_prefix created maintenance branch for version $new_ver"
+    cd "$wcroot"
+    svn_up
+    cd branches/"$branch_name"
+    set_ver "$new_ver" "$branch_ver"
+}
+
+function run_stage()
+{
+    if [ ! "$1" ]; then
+        run_stage 1
+        echo
+        run_stage 2
+        echo
+        run_stage 3
+    else
+        echo "Press enter to run stage $1 (or enter anything to skip this stage)."
+        read
+        if [ ! "$REPLY" ]; then
+            cd "$working_copy"
+            if [ "$1" == 1 ]; then
+                stage_1
+            elif [ "$1" == 2 ]; then
+                stage_2
+            elif [ "$1" == 3 ]; then
+                stage_3
+            else
+                echo 'Invalid stage.'
+                echo
+                usage
+            fi
+            echo
+            echo "Stage $1 completed."
+        else
+            echo "Skipped stage $1."
+        fi
+    fi
+}
+
+function stage_1()
+{
+    svn_up
+    echo
+    # update __version_details__ string
+    (echo ",s/^__version_details__ = .*\$/__version_details__ = 'release'/";
+        echo wq) | ed docutils/__init__.py 2> /dev/null
+    set_ver "$old_ver" "$new_ver"
+    echo
+    history_files='HISTORY.txt RELEASE-NOTES.txt'
+    echo "Now updating the following files: $history_files"
+    old_string="Changes Since [0-9.]+"
+    new_string="Release $new_ver (`date --utc --iso-8601`)"
+    echo 'Press enter to replace "'"$old_string"'" with "'"$new_string"\",
+    echo 'or enter anything to skip.'
+    read
+    test "$REPLY" || python -c "for filename in '$history_files'.split():
+        import re
+        h = file(filename).read()
+        h = re.sub('$old_string\\n=+', '$new_string\\n' + '=' * len('$new_string'), h, count=1)
+        file(filename, 'w').write(h)"
+    checkin 'closed "Changes Since ..." section' $history_files
+}
+
+function stage_2()
+{
+    echo 'Creating working area...'
+    working_area="`echo ~/tmp/docutils-release.$$`"
+    run mkdir -p "$working_area"
+    echo
+    echo 'Getting a fresh export.'
+    echo 'Press enter to proceed (or enter anything to skip)...'
+    read
+    if [ ! "$REPLY" ]; then
+        run cd "$working_area"
+        confirm svn export "$svnurl"
+        echo
+        echo 'Building the release tarball.'
+        run cd docutils
+        confirm ./setup.py sdist
+        run cd ..
+        echo 'Tarball built.'
+        run cp docutils/dist/"$tarball" .
+        echo 'BETTER run release-test.sh manually for each installed python version.'
+        echo "DO: cd $working_area and call sandbox/infrastructure/release-test.sh py_ver docutils_ver"
+        confirm test_tarball
+        echo "Testing documentation and uploading htdocs of version $new_ver..."
+        confirm upload_htdocs
+        echo "Tagging current revision..."
+        confirm svn cp "$svnurl" "$svnroot/tags/docutils-$new_ver/" -m "$log_prefix tagging released revision"
+        echo "Uploading $tarball to SF.net."
+        confirm upload_tarball
+        echo 'Now go to https://sourceforge.net/projects/docutils/files/docutils'
+        echo 'and follow the instructions at'
+        echo 'http://docutils.sf.net/docs/dev/release.html#file-release-system'
+        echo
+        echo 'Then press enter.'
+        read
+    fi
+    run cd $working_area
+    echo 'Downloading the tarball to verify its integrity.'
+    while true; do
+	    # BUG path is wrong. project admin filemanager shows md5sum
+        confirm wget http://sourceforge.net/projects/docutils/files/"$tarball"
+        echo 'Was the download successful?'
+        echo 'If yes, press enter to continue, otherwise enter anything to repeat'
+        echo '(it is possible that the file will show up in a few minutes).'
+        read
+        test "$REPLY" || break
+    done
+    confirm test_tarball
+    echo 'we are registered with PyPI...'
+    echo 'upload to pypi with twine or set download url for this release'
+
+    echo 'Press enter to proceed (or enter anything to skip)...'
+    read
+    if [ ! "$REPLY" ]; then
+        echo "Unpacking tarball..."
+        ls -l
+        pwd
+        run twine upload "$tarball"
+        echo "verify on PyPI. hide older releases."
+        echo "TODO TEST build wheels and upload"
+        run pip wheel docutils
+        run twine upload docutils-*-py2-none-any.whl
+        run pip3 wheel docutils
+        run twine upload wheelhouse/docutils-${new_ver}-py3-none-any.whl
+    fi
+}
+
+function stage_3()
+{
+    svn_up
+    echo
+    # update __version_details__ string
+    (echo ",s/^__version_details__ = .*\$/__version_details__ = 'repository'/";
+        echo wq) | ed docutils/__init__.py 2> /dev/null
+    checkin 'set __version_details__ to "repository"'
+    echo
+    history_files='HISTORY.txt RELEASE-NOTES.txt'
+    echo "Now updating the following files: $history_files"
+    add_string="Changes Since $new_ver"
+    before="Release "
+    echo 'Press enter to add "'"$add_string"'" section,'
+    echo 'or enter anything to skip.'
+    read
+    test "$REPLY" || python -c "for filename in '$history_files'.split():
+        import re
+        h = file(filename).read()
+        h = re.sub('\n$before', '\\n$add_string\\n' + '=' * len('$add_string') +
+                   '\\n\\n\\n$before', h, count=1)
+        file(filename, 'w').write(h)"
+    checkin "added empty \"Changes Since $new_ver\" section" $history_files
+    echo
+    if test "$branch_ver"; then
+        create_maintenance_branch
+        cd "$working_copy"
+    fi
+    set_ver "$new_ver" "$svn_ver"
+    echo 'Please change version number in README.txt'
+    echo
+    echo 'Please update the web page now (web/index.txt).'
+    echo 'cd into sandbox/infrastructure'
+    echo 'and call docutils-update.local (requires linux, macosx cp misses something)'
+    echo "Press enter when you're done."
+    read
+}
+
+initialize "$@"
+run_stage "$3"
+echo
+echo 'Finished.'
+echo 'Run alltests.py on svn version now.'
+
+# Local Variables:
+# indent-tabs-mode: nil
+# End:

Deleted: trunk/sandbox/infrastructure/release.sh
===================================================================
--- trunk/sandbox/infrastructure/release.sh	2024-08-13 11:07:40 UTC (rev 9893)
+++ trunk/sandbox/infrastructure/release.sh	2024-08-13 11:08:12 UTC (rev 9894)
@@ -1,460 +0,0 @@
-#!/bin/bash
-
-# Author: Lea Wiemann
-# Contact: [email protected]
-# Revision: $Revision$
-# Date: $Date$
-# Copyright: This script has been placed in the public domain.
-
-# USAGE see: docutils/docs/dev/release.txt
-
-# must be run from docutils trunk/docutils, 
-# because HISTORY and RELEASE_NOTES.txt are modified.
-
-set -e
-
-function print_command()
-{
-    # Print "$@", quoting parameters containing spaces.
-    echo -n $
-    for param in "$@"; do
-        echo "$param" | grep -Fq ' ' && echo -n " '$param'" || echo -n " $param"
-    done
-}
-
-function run()
-{
-    # Print and run "$@".
-    print_command "$@"
-    echo
-    "$@"
-}
-
-function confirm()
-{
-    # Print, let the user confirm and run "$@".
-    echo 'Press enter to run (or enter anything to skip):'
-    print_command "$@"
-    read
-    test "$REPLY" && echo Skipped. || "$@"
-}
-
-function svn_up()
-{
-    if test $svn == svk; then
-        confirm svk sync "$depot"
-    fi
-    confirm $svn up
-}
-
-function checkin()
-{
-    # Parameters: log_message, file, file, file ...
-    log_message="$1"
-    shift
-    confirm $svn diff "$@"
-    confirm $svn ci -m "$log_prefix $log_message" "$@"
-}
-
-function set_ver()
-{
-    # Parameters: old_version new_version
-    shopt -s extglob
-    echo Determining list of files to be changed...
-    # BUG ls lists directories but does not descend
-    files="docutils/__init__.py setup.py `$svn ls test/functional/expected/ | sed 's|^|test/functional/expected/|'`"
-    echo "Now I'll change the version number to $2 in the following files:"
-    echo $files
-    echo
-    echo 'Press enter to proceed (or enter anything to skip)...'
-    read
-    if [ ! "$REPLY" ]; then
-        echo 'Modifying files with ed...'
-        old_ver_regex="`echo "$1" | sed 's/\./\\\\./g'`"
-        # "ed" returns an error code if there has been no substitution, so
-        # we temporarily deactivate exit-on-error.
-        set +e
-        for F in $files; do
-            (echo ",s/$old_ver_regex/$2/g"; echo 'wq') | ed "$F"
-        done
-        set -e
-    fi
-    echo
-    echo 'CAUTION: please look at the diffs carefully, for wrongly'
-    echo ' replaced embedded numbers.'
-    checkin "set version number to $2" $files
-}
-
-function usage()
-{
-    echo 'Usage:'
-    echo
-    echo '    release.sh new_version svn_version[:branch_version] [stage]'
-    echo
-    echo 'The following things will be done:'
-    echo
-    echo '* Change version number to new_version.  (stage 1)'
-    echo '* SVN-export, test, and release Docutils version new_version.  (stage 2)'
-    echo '* Change version number to svn_version.  (stage 3)'
-    echo
-    echo 'If stage is supplied (1, 2 or 3), only the specified stage will'
-    echo 'be executed.  Otherwise, it defaults to executing all stages.'
-    echo
-    echo 'Before doing dangerous things, you will be asked to press enter.'
-    echo
-    echo 'A maintenance branch called docutils-new_version will be created'
-    echo 'if branch_version is given.  The version number inside the'
-    echo 'maintenance branch will be set to branch_version.'
-    echo 
-    echo 'Access ssh,scp and sftp access to shell/frs.sourceforge.net'
-    echo 'must be configured.'
-    exit 1
-}
-
-function initialize()
-{
-    if [ "$#" -lt 2 ]; then
-        usage
-    fi
-    echo 'Initializing...'
-    python_versions='2.6 2.7'
-    for py_ver in $python_versions; do
-        echo -n "Checking for Python $py_ver (python$py_ver)... "
-        if ! echo 'print "OK"' | python$py_ver; then
-            echo "WARN: Python $py_ver (python$py_ver) not found."
-        fi
-    done
-    echo -n 'Clearing $PYTHONPATH... '
-    export PYTHONPATH=
-    echo 'done'
-    echo -n 'Checking whether we are in a working copy... '
-    if [ -f HISTORY.txt ]; then
-        echo yes
-    else
-        echo "no (HISTORY.txt doesn't exist)"
-        echo 'Aborting.'
-        echo 'Please cd to a working copy before running this script.'
-        exit 1
-    fi
-    echo -n 'Subversion binary to use: '
-    # TODO breaks for newer svn, .svn is in upper. is this for svk 
-    svn=svn
-    echo $svn
-    working_copy="`pwd -P`"
-    echo "Working copy: $working_copy"
-    svnurl="`$svn info . | grep ^URL: | sed 's/URL: //'`"
-    if test -z "$svnurl"; then
-        echo 'Unable to detect Subversion URL.  Aborting.'
-        exit 1
-    fi
-    echo "Subversion URL: $svnurl"
-    if ! echo "$svnurl" | grep -q 'branches\|trunk'; then
-        echo 'Subversion URL contains neither "branches" nor "trunk".'
-        echo 'Aborting.'
-        exit 1
-    fi
-    if test `uname` = "Darwin" ; then
-        svnroot="`echo "$svnurl" | sed -E 's/\/(branches|trunk).*//'`"
-    else
-        svnroot="`echo "$svnurl" | sed 's/\/\(branches\|trunk\).*//'`"
-    fi
-    echo "Subversion root URL: $svnroot"
-    if test "$svnurl" = "$svnroot"; then
-        echo 'Error: Subversion URL and Subversion root URL are the same.'
-        echo '  probably a MacOSX sed problem.'
-        exit 1
-    fi
-    echo -n 'Detecting current Docutils version... '
-    old_ver="`python -c 'import docutils; print docutils.__version__'`"
-    echo "$old_ver"
-    new_ver="$1"
-    # log_prefix is for SVN logs.
-    log_prefix="Release $new_ver:"
-    echo "New version number (for releasing): $new_ver"
-    svn_ver="$2"
-    if echo "$svn_ver" | grep -q :; then
-        # Split at colon: svn_ver:branch_ver
-        branch_ver="${svn_ver#*:}"
-        svn_ver="${svn_ver%:*}"
-    else
-        branch_ver=
-    fi
-    echo "New Subversion version number (after releasing): $svn_ver"
-    echo -n 'Create maintenance branch: '
-    if test "$branch_ver"; then
-        echo yes
-        echo "New version number on maintenance branch: $branch_ver"
-    else
-        echo no
-    fi
-    if test "$branch_ver"; then
-        echo -n 'Checking that we have a full checkout... '
-        if echo "$working_copy" | grep -q 'branches\|trunk'; then
-            echo OK
-        else
-            echo 'no'
-            echo 'Working copy path contains neither "branches" nor "trunk".'
-            echo 'You need a full checkout in order to branch.'
-            echo 'Aborting.'
-            exit 1
-        fi
-        wcroot="`echo "$working_copy" | sed 's/\/\(branches\|trunk\).*//'`"
-        echo "Working copy root: $wcroot"
-    fi
-    tarball=docutils-"$new_ver".tar.gz
-    echo "Tarball name: $tarball"
-    echo 'Initialization completed.'
-    echo
-}
-
-function test_tarball()
-{
-    # Assume we have the tarball in the current directory.
-    # Pass test number as first parameter.
-    echo 'Testing the release tarball.'
-    run mkdir tarball_test/
-    run cd tarball_test/
-    confirm tar xzvf "../$tarball"
-    echo
-    run cd docutils-"$new_ver"
-    echo 'Deleteing old installations. Installing the distribution.'
-    echo "WARN: might not find installation."
-    for py_ver in '"$python_versions"'; do
-        echo "python$py_ver install/update and test."
-        bash release-test.sh
-        echo "Enter to test next."
-        read
-    done
-}
-
-function upload_tarball()
-{
-    # Assume we have the tarball in the working area.
-    run cd "$working_area"
-    mkdir $new_ver
-    cp docutils-$new_ver.tar.gz $new_ver
-    cp docutils/RELEASE-NOTES.txt $new_ver
-    # README.txt would be displayed automatically on sf.
-    # BUG user grubert hardcoded
-    # short path  "/home/frs/project/docutils/docutils/" also exists
-    scp -r $new_ver grubert,[email protected]:/home/frs/project/d/do/docutils/docutils/
-    echo 'Upload completed.'
-}
-
-function upload_htdocs()
-{
-    # Assume we have the tarball in the working area.
-    run cd "$working_area"
-    echo "Upload htdocs for $new_ver"
-    run mkdir htdocs
-    run cd htdocs
-    confirm tar xzvf "../$tarball"
-    run cd docutils-"$new_ver"/tools/
-    echo "BUG no docutils installation left."
-    echo "DO NOT call manually in $(pwd)"
-    confirm ./buildhtml.py --local ..
-    confirm ./buildhtml.py ../docs
-    run cd ..
-    echo '$ find . -name test -type d -prune -o -name \*.css -print0 \
-        -o -name \*.html -print0 -o -name \*.txt -print0 \
-        | tar -cjvf docutils-docs.tar.bz2 -T - --null'
-    find . -name test -type d -prune -o -name \*.css -print0 \
-        -o -name \*.html -print0 -o -name \*.txt -print0 \
-        | tar -cjvf docutils-docs.tar.bz2 -T - --null
-    echo 'Upload docs to SF.net...'
-    echo 'Press enter (or enter anything to skip).'
-    read
-    if [ ! "$REPLY" ]; then
-       mkdir $new_ver
-       cd $new_ver
-       tar xjvf ../docutils-docs.tar.bz2
-	   cd ..
-	   chmod -R g+rw $new_ver
-	   scp -r -p -C $new_ver web.sourceforge.net:/home/groups/d/do/docutils/htdocs
-    fi
-}
-
-function create_maintenance_branch()
-{
-    echo 'Creating maintenance branch.'
-    branch_name="docutils-$new_ver"
-    echo "Branch name: $branch_name"
-    branch_url="$svnroot/branches/$branch_name"
-    echo "Branch URL: $branch_url"
-    confirm svn cp "$svnurl" "$branch_url" -m \
-        "$log_prefix created maintenance branch for version $new_ver"
-    cd "$wcroot"
-    svn_up
-    cd branches/"$branch_name"
-    set_ver "$new_ver" "$branch_ver"
-}
-
-function run_stage()
-{
-    if [ ! "$1" ]; then
-        run_stage 1
-        echo
-        run_stage 2
-        echo
-        run_stage 3
-    else
-        echo "Press enter to run stage $1 (or enter anything to skip this stage)."
-        read
-        if [ ! "$REPLY" ]; then
-            cd "$working_copy"
-            if [ "$1" == 1 ]; then
-                stage_1
-            elif [ "$1" == 2 ]; then
-                stage_2
-            elif [ "$1" == 3 ]; then
-                stage_3
-            else
-                echo 'Invalid stage.'
-                echo
-                usage
-            fi
-            echo
-            echo "Stage $1 completed."
-        else
-            echo "Skipped stage $1."
-        fi
-    fi
-}
-
-function stage_1()
-{
-    svn_up
-    echo
-    # update __version_details__ string
-    (echo ",s/^__version_details__ = .*\$/__version_details__ = 'release'/";
-        echo wq) | ed docutils/__init__.py 2> /dev/null
-    set_ver "$old_ver" "$new_ver"
-    echo
-    history_files='HISTORY.txt RELEASE-NOTES.txt'
-    echo "Now updating the following files: $history_files"
-    old_string="Changes Since [0-9.]+"
-    new_string="Release $new_ver (`date --utc --iso-8601`)"
-    echo 'Press enter to replace "'"$old_string"'" with "'"$new_string"\",
-    echo 'or enter anything to skip.'
-    read
-    test "$REPLY" || python -c "for filename in '$history_files'.split():
-        import re
-        h = file(filename).read()
-        h = re.sub('$old_string\\n=+', '$new_string\\n' + '=' * len('$new_string'), h, count=1)
-        file(filename, 'w').write(h)"
-    checkin 'closed "Changes Since ..." section' $history_files
-}
-
-function stage_2()
-{
-    echo 'Creating working area...'
-    working_area="`echo ~/tmp/docutils-release.$$`"
-    run mkdir -p "$working_area"
-    echo
-    echo 'Getting a fresh export.'
-    echo 'Press enter to proceed (or enter anything to skip)...'
-    read
-    if [ ! "$REPLY" ]; then
-        run cd "$working_area"
-        confirm svn export "$svnurl"
-        echo
-        echo 'Building the release tarball.'
-        run cd docutils
-        confirm ./setup.py sdist
-        run cd ..
-        echo 'Tarball built.'
-        run cp docutils/dist/"$tarball" .
-        echo 'BETTER run release-test.sh manually for each installed python version.'
-        echo "DO: cd $working_area and call sandbox/infrastructure/release-test.sh py_ver docutils_ver"
-        confirm test_tarball
-        echo "Testing documentation and uploading htdocs of version $new_ver..."
-        confirm upload_htdocs
-        echo "Tagging current revision..."
-        confirm svn cp "$svnurl" "$svnroot/tags/docutils-$new_ver/" -m "$log_prefix tagging released revision"
-        echo "Uploading $tarball to SF.net."
-        confirm upload_tarball
-        echo 'Now go to https://sourceforge.net/projects/docutils/files/docutils'
-        echo 'and follow the instructions at'
-        echo 'http://docutils.sf.net/docs/dev/release.html#file-release-system'
-        echo
-        echo 'Then press enter.'
-        read
-    fi
-    run cd $working_area
-    echo 'Downloading the tarball to verify its integrity.'
-    while true; do
-	    # BUG path is wrong. project admin filemanager shows md5sum
-        confirm wget http://sourceforge.net/projects/docutils/files/"$tarball"
-        echo 'Was the download successful?'
-        echo 'If yes, press enter to continue, otherwise enter anything to repeat'
-        echo '(it is possible that the file will show up in a few minutes).'
-        read
-        test "$REPLY" || break
-    done
-    confirm test_tarball
-    echo 'we are registered with PyPI...'
-    echo 'upload to pypi with twine or set download url for this release'
-
-    echo 'Press enter to proceed (or enter anything to skip)...'
-    read
-    if [ ! "$REPLY" ]; then
-        echo "Unpacking tarball..."
-        ls -l
-        pwd
-        run twine upload "$tarball"
-        echo "verify on PyPI. hide older releases."
-        echo "TODO TEST build wheels and upload"
-        run pip wheel docutils
-        run twine upload docutils-*-py2-none-any.whl
-        run pip3 wheel docutils
-        run twine upload wheelhouse/docutils-${new_ver}-py3-none-any.whl
-    fi
-}
-
-function stage_3()
-{
-    svn_up
-    echo
-    # update __version_details__ string
-    (echo ",s/^__version_details__ = .*\$/__version_details__ = 'repository'/";
-        echo wq) | ed docutils/__init__.py 2> /dev/null
-    checkin 'set __version_details__ to "repository"'
-    echo
-    history_files='HISTORY.txt RELEASE-NOTES.txt'
-    echo "Now updating the following files: $history_files"
-    add_string="Changes Since $new_ver"
-    before="Release "
-    echo 'Press enter to add "'"$add_string"'" section,'
-    echo 'or enter anything to skip.'
-    read
-    test "$REPLY" || python -c "for filename in '$history_files'.split():
-        import re
-        h = file(filename).read()
-        h = re.sub('\n$before', '\\n$add_string\\n' + '=' * len('$add_string') +
-                   '\\n\\n\\n$before', h, count=1)
-        file(filename, 'w').write(h)"
-    checkin "added empty \"Changes Since $new_ver\" section" $history_files
-    echo
-    if test "$branch_ver"; then
-        create_maintenance_branch
-        cd "$working_copy"
-    fi
-    set_ver "$new_ver" "$svn_ver"
-    echo 'Please change version number in README.txt'
-    echo
-    echo 'Please update the web page now (web/index.txt).'
-    echo 'cd into sandbox/infrastructure'
-    echo 'and call docutils-update.local (requires linux, macosx cp misses something)'
-    echo "Press enter when you're done."
-    read
-}
-
-initialize "$@"
-run_stage "$3"
-echo
-echo 'Finished.'
-echo 'Run alltests.py on svn version now.'
-
-# Local Variables:
-# indent-tabs-mode: nil
-# End:

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.