#!/usr/bin/env python """IPython release script. This should ONLY be run at real release time. """ from __future__ import print_function from toollib import * # Get main ipython dir, this will raise if it doesn't pass some checks ipdir = get_ipdir() tooldir = pjoin(ipdir, 'tools') distdir = pjoin(ipdir, 'dist') # Where I keep static backups of each release ipbackupdir = os.path.expanduser('~/ipython/backup') # Start in main IPython dir cd(ipdir) # Load release info execfile(pjoin('IPython','core','release.py')) # Build site addresses for file uploads release_site = '%s/release/%s' % (archive, version) backup_site = '%s/backup/%s' % (archive, version) # Start actual release process print() print('Releasing IPython') print('=================') print() print('Version:', version) print() print('Source IPython directory:', ipdir) print() # Perform local backup, go to tools dir to run it. cd(tooldir) sh('./make_tarball.py') sh('mv ipython-*.tgz %s' % ipbackupdir) # Build release files sh('./build_release %s' % ipdir) # Register with the Python Package Index (PyPI) print( 'Registering with PyPI...') cd(ipdir) sh('./setup.py register') # Upload all files sh('./setup.py sdist --formats=gztar,zip upload') cd(distdir) print( 'Uploading distribution files...') # FIXME: this assumes the path *with the version number* exists on the server sh('scp * %s' % release_site) print( 'Uploading backup files...') cd(ipbackupdir) # FIXME: this assumes the path *with the version number* exists on the server sh('scp `ls -1tr *tgz | tail -1` %s' % backup_site) print('Done!')