diff options
author | Jason Pellerin <jpellerin@gmail.com> | 2007-10-02 16:10:06 +0000 |
---|---|---|
committer | Jason Pellerin <jpellerin@gmail.com> | 2007-10-02 16:10:06 +0000 |
commit | 7dd15a6cd5602654eb1e1a9fcac40bf2dee76359 (patch) | |
tree | 476bf9e2b4b93930a6cec5edab5da7573e74a00f | |
parent | cc7c195257dbb3735e607fc52b67edf61831337c (diff) | |
download | nose-7dd15a6cd5602654eb1e1a9fcac40bf2dee76359.tar.gz |
Work on making mkrelease less clunky.
-rwxr-xr-x | scripts/mkrelease.py | 194 |
1 files changed, 106 insertions, 88 deletions
diff --git a/scripts/mkrelease.py b/scripts/mkrelease.py index 3c70807..bee5138 100755 --- a/scripts/mkrelease.py +++ b/scripts/mkrelease.py @@ -10,102 +10,120 @@ from commands import getstatusoutput success = 0 current = os.getcwd() - +version = nose.__version__ here = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) parts = here.split('/') -svn = parts.index('svn') -svnroot = os.path.join('/', *parts[:svn+1]) +branch = parts.index('branches') +svnroot = os.path.join('/', *parts[:branch]) branchroot = os.path.join(svnroot, 'branches') tagroot = os.path.join(svnroot, 'tags') svntrunk = os.path.join(svnroot, 'trunk') svn_trunk_url = 'https://python-nose.googlecode.com/svn/trunk' +SIMULATE = 'exec' not in sys.argv +if SIMULATE: + print("# simulated run: run as scripts/mkrelease.py exec " + "to execute commands") + + def runcmd(cmd): print cmd - (status,output) = getstatusoutput(cmd) - if status != success: - raise Exception(output) + if not SIMULATE: + (status,output) = getstatusoutput(cmd) + if status != success: + raise Exception(output) + + +def cd(dir): + print "cd %s" % dir + if not SIMULATE: + os.chdir(dir) -version = nose.__version__ -versioninfo = nose.__versioninfo__ - -os.chdir(svnroot) -print "cd %s" % svnroot - -# FIXME tail of version is hardcoded -branch = 'branches/%s.%s.0-stable' % (versioninfo[0], versioninfo[1]) -tag = 'tags/%s-release' % version - -if os.path.isdir(tag): - raise Exception("Tag path %s already exists. Can't release same version " - "twice!") - -# make branch, if needed -if not os.path.isdir(branch): - # update trunk - os.chdir(svntrunk) - print "cd %s" % svntrunk - runcmd('svn up') - os.chdir(svnroot) - print "cd %s" % svnroot - runcmd('svn copy %s %s' % (svn_trunk_url, branch)) - - # clean up setup.cfg and check in branch - os.chdir(branch) - print "cd %s" % branch - - # remove dev tag from setup - runcmd('cp setup.cfg.release setup.cfg') - runcmd('svn rm setup.cfg.release --force') - - os.chdir(branchroot) - print "cd %s" % branchroot - runcmd("svn ci -m 'Release branch for %s'" % version) - -else: - # re-releasing branch - os.chdir(branch) - print "cd %s" % branch - runcmd('svn up') - os.chdir(svnroot) - print "cd %s"% svnroot - -# make tag from branch -print "cd %s" % svnroot -os.chdir(svnroot) -runcmd('svn copy %s %s' % (branch, tag)) - -# check in tag -os.chdir(tagroot) -print "cd %s" % tagroot -runcmd("svn ci -m 'Release tag for %s'" % version) - -# make docs -os.chdir(svnroot) -os.chdir(tag) -print "cd %s" % tag - -runcmd('scripts/mkindex.py') -runcmd('scripts/mkdocs.py') -runcmd('scripts/mkwiki.py') - -# setup sdist -runcmd('python setup.py sdist') - -# upload docs and distribution -if 'NOSE_UPLOAD' in os.environ: - cv = {'version':version, - 'upload': os.environ['NOSE_UPLOAD'], - 'upload_docs': "%s/%s" % (os.environ['NOSE_UPLOAD'], version) } - cmd = 'scp -C dist/nose-%(version)s.tar.gz %(upload)s' % cv - runcmd(cmd) - - cmd = 'mkdir -p %(upload_docs)s/doc' % cv - - cmd = 'scp -C index.html %(upload_docs)s' % cv - runcmd(cmd) - - cmd = 'scp -C doc/*.html doc/*.css doc/*.png %(upload_docs)s/doc' % cv - runcmd(cmd) -os.chdir(current) +def main(): + cd(svnroot) + branch = 'branches/%s-stable' % version + tag = 'tags/%s-release' % version + + if os.path.isdir(tag): + raise Exception( + "Tag path %s already exists. Can't release same version twice!" + % tag) + + # make branch, if needed + if not os.path.isdir(branch): + # update trunk + cd(svntrunk) + runcmd('svn up') + cd(svnroot) + runcmd('svn copy %s %s' % (svn_trunk_url, branch)) + + # clean up setup.cfg and check in branch + cd(branch) + + # remove dev tag from setup + runcmd('cp setup.cfg.release setup.cfg') + runcmd('svn rm setup.cfg.release --force') + + cd(branchroot) + runcmd("svn ci -m 'Release branch for %s'" % version) + + else: + # re-releasing branch + cd(branch) + runcmd('svn up') + cd(svnroot) + + # make tag from branch + cd(svnroot) + runcmd('svn copy %s %s' % (branch, tag)) + + # check in tag + cd(tagroot) + runcmd("svn ci -m 'Release tag for %s'" % version) + + # make docs + cd(svnroot) + cd(tag) + + runcmd('scripts/mkindex.py') + runcmd('scripts/mkdocs.py') + runcmd('scripts/mkwiki.py') + + # setup sdist + runcmd('python setup.py sdist') + + # upload docs and distribution + if 'NOSE_UPLOAD' in os.environ: + up = os.environ['NOSE_UPLOAD'] + cv = { + 'host': up[:up.index(':')], + 'path': up[up.index(':')+1:], + 'version':version, + 'upload': up, + 'upload_docs': "%s%s" % (up, version) } + cv['versionpath'] = "%(path)s%(version)s" % cv + cv['docpath'] = "%(versionpath)s/doc" % cv + + cmd = 'scp -C dist/nose-%(version)s.tar.gz %(upload)s' % cv + runcmd(cmd) + + cmd = 'ssh %(host)s "mkdir -p %(docpath)s"' % cv + runcmd(cmd) + + cmd = 'scp -C index.html %(upload_docs)s' % cv + runcmd(cmd) + + cmd = ('scp -C doc/*.html doc/*.css doc/*.png ' + '%(upload_docs)s/doc' % cv) + runcmd(cmd) + + cmd = ('ssh %(host)s ' + '"ln -nfs %(versionpath)s/index.html %(path)sindex.html; ' + 'ln -nfs %(docpath)s %(path)sdoc"' % cv) + runcmd(cmd) + + cd(current) + +if __name__ == '__main__': + main() |