summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Pellerin <jpellerin@gmail.com>2007-10-02 16:10:06 +0000
committerJason Pellerin <jpellerin@gmail.com>2007-10-02 16:10:06 +0000
commit7dd15a6cd5602654eb1e1a9fcac40bf2dee76359 (patch)
tree476bf9e2b4b93930a6cec5edab5da7573e74a00f
parentcc7c195257dbb3735e607fc52b67edf61831337c (diff)
downloadnose-7dd15a6cd5602654eb1e1a9fcac40bf2dee76359.tar.gz
Work on making mkrelease less clunky.
-rwxr-xr-xscripts/mkrelease.py194
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()