Skip to content

Commit

Permalink
fullrelease: share vcs between stages.
Browse files Browse the repository at this point in the history
Otherwise we would ask 'do you want to change to the root of the repo' three times.
  • Loading branch information
mauritsvanrees committed Jun 24, 2015
1 parent ef8255a commit 0b109ce
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 21 deletions.
9 changes: 7 additions & 2 deletions zest/releaser/baserelease.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@

class Basereleaser(object):

def __init__(self):
self.vcs = choose.version_control()
def __init__(self, vcs=None):
if vcs is None:
self.vcs = choose.version_control()
else:
# In a fullrelease, we share the determined vcs between
# prerelease, release and postrelease.
self.vcs = vcs
self.data = {'workingdir': self.vcs.workingdir,
'reporoot': self.vcs.reporoot,
'name': self.vcs.name}
Expand Down
15 changes: 10 additions & 5 deletions zest/releaser/fullrelease.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,18 @@ def main():
utils.configure_logging()
logger.info('Starting prerelease.')
original_dir = os.getcwd()
prerelease.main()
os.chdir(original_dir)
# prerelease
prereleaser = prerelease.Prereleaser()
prereleaser.run()
logger.info('Starting release.')
tagdir = release.main(return_tagdir=True)
os.chdir(original_dir)
# release
releaser = release.Releaser(vcs=prereleaser.vcs)
releaser.run()
tagdir = releaser.data.get('tagdir')
logger.info('Starting postrelease.')
postrelease.main()
# postrelease
postreleaser = postrelease.Postreleaser(vcs=releaser.vcs)
postreleaser.run()
os.chdir(original_dir)
logger.info('Finished full release.')
if tagdir:
Expand Down
4 changes: 2 additions & 2 deletions zest/releaser/postrelease.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ class Postreleaser(baserelease.Basereleaser):
"""

def __init__(self):
baserelease.Basereleaser.__init__(self)
def __init__(self, vcs=None):
baserelease.Basereleaser.__init__(self, vcs=vcs)
# Prepare some defaults for potential overriding.
self.data.update(dict(
nothing_changed_yet=NOTHING_CHANGED_YET,
Expand Down
4 changes: 2 additions & 2 deletions zest/releaser/prerelease.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ class Prereleaser(baserelease.Basereleaser):
"""

def __init__(self):
baserelease.Basereleaser.__init__(self)
def __init__(self, vcs=None):
baserelease.Basereleaser.__init__(self, vcs=vcs)
# Prepare some defaults for potential overriding.
self.data.update(dict(
today=datetime.datetime.today().strftime('%Y-%m-%d'),
Expand Down
16 changes: 6 additions & 10 deletions zest/releaser/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ def package_in_pypi(package):
class Releaser(baserelease.Basereleaser):
"""Release the project by tagging it and optionally uploading to pypi."""

def __init__(self):
baserelease.Basereleaser.__init__(self)
def __init__(self, vcs=None):
baserelease.Basereleaser.__init__(self, vcs=vcs)
# Prepare some defaults for potential overriding.
self.data.update(dict(
# Nothing yet
Expand Down Expand Up @@ -310,15 +310,11 @@ def datacheck(data):
utils.is_data_documented(data, documentation=DATA)


def main(return_tagdir=False):
def main():
utils.parse_options()
utils.configure_logging()
releaser = Releaser()
releaser.run()
if return_tagdir:
# At the end, for the benefit of fullrelease.
return releaser.data.get('tagdir')
else:
tagdir = releaser.data.get('tagdir')
if tagdir:
logger.info("Reminder: tag checkout is in %s", tagdir)
tagdir = releaser.data.get('tagdir')
if tagdir:
logger.info("Reminder: tag checkout is in %s", tagdir)

0 comments on commit 0b109ce

Please sign in to comment.