''' This is the release process of the sugar packages sugar(shell), 
sugar-toolkit and sugar-base described in a pytish way
'''

for package in [sugar, sugar-toolkit, sugar-base, sugar-artwork]:
    # Release a new version in git
    Pull the latest sources.
    Increase the version number in configure.ac
    # this will create you a tarball and does a check if it builds fine
    # e.g. it will check if all the files containing translations are 
    # in po/POTFILES.in
    make distcheck 

    if that succeed:
        # commit the change, log it as "Release [version_number]" (e.g. 0.79.1)
        git commit -a
        # Tag the release:
        git tag v[version_number]
        # Then push both the tag and the change:
        git push --tags
        git push
    else:
        break

    # Upload the package
    Upload the tarball to dev.laptop.org:/var/www/sugar/sources/[package]

    # Verify the upload of the package
    Check that the package has been uploaded fine: \
            http://dev.laptop.org/pub/sugar/sources/[package]

    # Build and release a new rpm
    # more info on fedora packaging: 
    #     http://fedoraproject.org/wiki/PackageMaintainers/UpdatingPackageHowTo
    # request permissions to contribute to the fedora package: 
    #     https://admin.fedoraproject.org/pkgdb/packages/name/[package]

    if not cvs_package:
        # Get sugar from fedora cvs:
        CVSROOT=:ext:erikos@cvs.fedoraproject.org:/cvs/pkgs cvs co [package]
        cd cvs_package
    else:
        cd cvs_package
        cvs update

    cd OLPC-3
    make new-sources FILES="[tarball-created-with-make_distcheck]"

    # Change the version in the spec
    Bump the release number
    Edit the Changelog
    # verify your changes
    cvs diff -u
    make srpm

    make clog
    cvs commit -F clog

    make tag
    make build

# Do the same for the other branches e.g. devel 
