mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-23 11:12:47 +01:00
release: Revamp to use subprocess instead of os.system
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
This commit is contained in:
parent
fefacf5b2f
commit
e6d361fc92
@ -4,6 +4,7 @@ import os
|
||||
import re
|
||||
import sys
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from optparse import OptionParser
|
||||
|
||||
@ -13,6 +14,7 @@ def firstLines(filename, n):
|
||||
while n:
|
||||
n -= 1
|
||||
lines.append(fd.readline().rstrip('\r\n'))
|
||||
fd.close()
|
||||
return lines
|
||||
|
||||
def firstLine(filename):
|
||||
@ -22,23 +24,29 @@ def error(s):
|
||||
sys.stderr.write(s+'\n')
|
||||
sys.exit(-1)
|
||||
|
||||
def system(sh, errmsg=None):
|
||||
def system(sh, errmsg=None, **kwargs):
|
||||
if errmsg is None:
|
||||
errmsg = repr(sh)
|
||||
ret = os.system(sh)
|
||||
if isinstance(sh, basestring):
|
||||
errmsg = repr(sh)
|
||||
else:
|
||||
errmsg = repr(' '.join(sh))
|
||||
ret = subprocess.call(sh, **kwargs)
|
||||
if ret:
|
||||
error(errmsg + ' (error code: %s)' % ret)
|
||||
|
||||
def checkGitRepo():
|
||||
system('test "$(git rev-parse --is-inside-work-tree)" = "true"',
|
||||
'Must be run from a git checkout.')
|
||||
'Must be run from a git checkout.',
|
||||
shell=True)
|
||||
system('test "$(git rev-parse --show-cdup >/dev/null)" = ""',
|
||||
'Must be run from the top-level directory of the git checkout.')
|
||||
'Must be run from the top-level directory of the git checkout.',
|
||||
shell=True)
|
||||
system('git rev-parse --verify HEAD >/dev/null '
|
||||
'&& git update-index --refresh'
|
||||
'&& git diff-files --quiet'
|
||||
'&& git diff-index --cached --quiet HEAD --',
|
||||
'Your tree is unclean. Can\'t run from here.')
|
||||
'Your tree is unclean. Can\'t run from here.',
|
||||
shell=True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
usage = 'usage: %prog [options] <username> <version>'
|
||||
@ -72,8 +80,8 @@ if __name__ == '__main__':
|
||||
' Change to an appropriate directory or remove the supybot '
|
||||
'directory to continue.')
|
||||
print 'Checking out fresh tree from git.'
|
||||
system('git clone -b %s git+ssh://%s@supybot.git.sourceforge.net/gitroot/supybot'
|
||||
% (branch, u))
|
||||
system(['git', 'clone', '-b', branch,
|
||||
'git+ssh://%s@supybot.git.sourceforge.net/gitroot/supybot' % u])
|
||||
os.chdir('supybot')
|
||||
|
||||
print 'Checking RELNOTES version line.'
|
||||
@ -90,36 +98,45 @@ if __name__ == '__main__':
|
||||
print 'Updating version in version files.'
|
||||
versionFiles = ['src/version.py']
|
||||
for fn in versionFiles:
|
||||
sh = 'perl -pi -e "s/^version\s*=.*/version = \'%s\'/" %s' % (v, fn)
|
||||
sh = ['perl', '-pi', '-e', 's/^version\s*=.*/version = \'%s\'/' % v, fn]
|
||||
system(sh, 'Error changing version in %s' % fn)
|
||||
system('git commit %s -m \'Updated to %s.\' %s'
|
||||
% (sign, v, ' '.join(versionFiles)))
|
||||
commit = ['git', 'commit']
|
||||
if sign:
|
||||
commit.append('-s')
|
||||
system(commit + ['-m', 'Updated to %s.' % v] + versionFiles)
|
||||
|
||||
print 'Tagging release.'
|
||||
system('git tag %s -m "Release %s" %s' % (sign or '-a', v, v))
|
||||
tag = ['git', 'tag']
|
||||
if sign:
|
||||
tag.append('-s')
|
||||
system(tag + ['-m', "Release %s" % v, 'v%s' % v])
|
||||
|
||||
print 'Committing %s+git to version files.' % v
|
||||
for fn in versionFiles:
|
||||
sh = 'perl -pi -e "s/^version\s*=.*/version = \'%s\'/" %s' % \
|
||||
(v + '+git', fn)
|
||||
system(sh, 'Error changing version in %s' % fn)
|
||||
system('git commit %s -m \'Updated to %s+git.\' %s'
|
||||
% (sign, v, ' '.join(versionFiles)))
|
||||
system(['perl', '-pi', '-e',
|
||||
's/^version\s*=.*/version = \'%s+git\'/' % v, fn],
|
||||
'Error changing version in %s' % fn)
|
||||
system(commit + ['-m', 'Updated to %s+git.' % v] + versionFiles)
|
||||
|
||||
if not dryrun:
|
||||
print 'Pushing commits and tag.'
|
||||
system('git push origin %s' % branch)
|
||||
system('git push --tags')
|
||||
system(['git', 'push', 'origin', branch])
|
||||
system(['git', 'push', '--tags'])
|
||||
|
||||
archive = ['git', 'archive', '--prefix=Supybot-%s/' % v]
|
||||
print 'Creating tarball (gzip).'
|
||||
system('git archive --prefix=Supybot-%s/ --format=tar %s '
|
||||
'| gzip -c >../Supybot-%s.tar.gz' % (v, v, v))
|
||||
system(archive + ['-o', '../Supybot-%s.tar.gz' % v,
|
||||
'--format=tgz', 'v%s' % v])
|
||||
|
||||
system(['git', 'config', 'tar.bz2.command', 'bzip2 -c'])
|
||||
|
||||
print 'Creating tarball (bzip2).'
|
||||
system('git archive --prefix=Supybot-%s/ --format=tar %s '
|
||||
'| bzip2 -c >../Supybot-%s.tar.bz2' % (v, v, v))
|
||||
system(archive + ['-o', '../Supybot-%s.tar.bz2' % v,
|
||||
'--format=bz2', 'v%s' % v])
|
||||
|
||||
print 'Creating zip.'
|
||||
system('git archive --prefix=Supybot-%s/ --format=zip %s '
|
||||
'>../Supybot-%s.zip' % (v, v, v))
|
||||
system(archive + ['-o', '../Supybot-%s.zip' % v,
|
||||
'--format=zip', 'v%s' % v])
|
||||
|
||||
os.chdir('..')
|
||||
shutil.rmtree('supybot')
|
||||
|
Loading…
Reference in New Issue
Block a user