Added some additional zest.releaser hooks to deal with some perpetual annoyances of doing releases.
git-svn-id: https://svn.stsci.edu/svn/ssb/stsci_python/d2to1/trunk@24209 fe389314-cf27-0410-b35b-8c050e845b92
This commit is contained in:
parent
d1d4f9c234
commit
0d335d0804
|
@ -25,6 +25,7 @@ ConfigParser = m.configparser.ConfigParser
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
||||
def update_setupcfg_version(filename, version):
|
||||
"""Opens the given setup.cfg file, locates the version option in the
|
||||
[metadata] section, updates it to the new version.
|
||||
|
@ -66,6 +67,92 @@ def prereleaser_middle(data):
|
|||
update_setupcfg_version(filename, data['new_version'])
|
||||
|
||||
|
||||
def releaser_middle(data):
|
||||
"""
|
||||
releaser.middle hook to monkey-patch zest.releaser to support signed
|
||||
tagging--currently this is the only way to do this. Also monkey-patches to
|
||||
disable an annoyance where zest.releaser only creates .zip source
|
||||
distributions. This is supposedly a workaround for a bug in Python 2.4,
|
||||
but we don't care about Python 2.4.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from zest.releaser.git import Git
|
||||
from zest.releaser.release import Releaser
|
||||
|
||||
# Copied verbatim from zest.releaser, but with the cmd string modified to
|
||||
# use the -s option to create a signed tag
|
||||
def _my_create_tag(self, version):
|
||||
msg = "Tagging %s" % (version,)
|
||||
cmd = 'git tag -s %s -m "%s"' % (version, msg)
|
||||
if os.path.isdir('.git/svn'):
|
||||
print "\nEXPERIMENTAL support for git-svn tagging!\n"
|
||||
cur_branch = open('.git/HEAD').read().strip().split('/')[-1]
|
||||
print "You are on branch %s." % (cur_branch,)
|
||||
if cur_branch != 'master':
|
||||
print "Only the master branch is supported for git-svn tagging."
|
||||
print "Please tag yourself."
|
||||
print "'git tag' needs to list tag named %s." % (version,)
|
||||
sys.exit()
|
||||
cmd = [cmd]
|
||||
local_head = open('.git/refs/heads/master').read()
|
||||
trunk = open('.git/refs/remotes/trunk').read()
|
||||
if local_head != trunk:
|
||||
print "Your local master diverges from trunk.\n"
|
||||
# dcommit before local tagging
|
||||
cmd.insert(0, 'git svn dcommit')
|
||||
# create tag in svn
|
||||
cmd.append('git svn tag -m "%s" %s' % (msg, version))
|
||||
return cmd
|
||||
|
||||
# Similarly copied from zer.releaser to support use of 'v' in front
|
||||
# of the version number
|
||||
def _my_make_tag(self):
|
||||
from zest.releaser import utils
|
||||
from os import system
|
||||
|
||||
if self.data['tag_already_exists']:
|
||||
return
|
||||
cmds = self.vcs.cmd_create_tag(self.data['version'])
|
||||
if not isinstance(cmds, list):
|
||||
cmds = [cmds]
|
||||
if len(cmds) == 1:
|
||||
print "Tag needed to proceed, you can use the following command:"
|
||||
for cmd in cmds:
|
||||
print cmd
|
||||
if utils.ask("Run this command"):
|
||||
print system(cmd)
|
||||
else:
|
||||
# all commands are needed in order to proceed normally
|
||||
print "Please create a tag for %s yourself and rerun." % \
|
||||
(self.data['version'],)
|
||||
sys.exit()
|
||||
if not self.vcs.tag_exists('v' + self.data['version']):
|
||||
print "\nFailed to create tag %s!" % (self.data['version'],)
|
||||
sys.exit()
|
||||
|
||||
# Normally all this does is to return '--formats=zip', which is currently
|
||||
# hard-coded as an option to always add to the sdist command; they ought to
|
||||
# make this actually optional
|
||||
def _my_sdist_options(self):
|
||||
return ''
|
||||
|
||||
Git.cmd_create_tag = _my_create_tag
|
||||
Releaser._make_tag = _my_make_tag
|
||||
Releaser._sdist_options = _my_sdist_options
|
||||
|
||||
|
||||
def postreleaser_before(data):
|
||||
"""
|
||||
Fix the irritating .dev0 default appended to new development versions by
|
||||
zest.releaser to just append ".dev" without the "0".
|
||||
"""
|
||||
|
||||
data['dev_version_template'] = '%(new_version)s.dev'
|
||||
|
||||
|
||||
def postreleaser_middle(data):
|
||||
filename = os.path.join(data['workingdir'], 'setup.cfg')
|
||||
if os.path.exists(filename):
|
||||
|
|
Loading…
Reference in New Issue