def get_next_version(previous_version: semver.VersionInfo, release_type: str) -> semver.VersionInfo: if previous_version: if not release_type: # Prompt the user if it was not added as a CLI argument. release_type = click.prompt('Release type', type=RELEASE_TYPE_CHOICES) release_type = release_type.upper() if release_type == 'MAJOR': return previous_version.bump_major() elif release_type == 'MINOR': return previous_version.bump_minor() else: return previous_version.bump_patch() else: return semver.VersionInfo.parse('0.1.0')
def version_bump(version: semver.VersionInfo): """ Bump the version number Args: version (semver.VersionInfo): parsed value Returns: bumped (semver.VersionInfo): parsed value with bump """ choices = [ { 'name': 'Patch: {} ==> {}'.format(version, version.bump_patch()), 'value': version.bump_patch() }, { 'name': 'Minor: {} ==> {}'.format(version, version.bump_minor()), 'value': version.bump_minor() }, { 'name': 'Major: {} ==> {}'.format(version, version.bump_major()), 'value': version.bump_major() }, { 'name': 'Build: {} ==> {}'.format(version, version.bump_build()), 'value': version.bump_build() }, { 'name': 'Prerelease: {} ==> {}'.format(version, version.bump_prerelease()), 'value': version.bump_prerelease() }, Separator(), { 'name': 'Manual type version', 'value': 'manual' }, Separator(), { 'name': 'Quit', 'value': 'quit' }, ] # PyInquirer has a mouse-click problem (yes you read that correctly) # https://github.com/CITGuru/PyInquirer/issues/41 # Until that's fixed we need to handle menus carefully response = None while response is None: answers = prompt([{ 'type': 'list', 'name': 'verbump', 'message': 'What bump do you want?', 'choices': choices }]) if 'verbump' in answers: response = answers['verbump'] if type(response) is str and response == 'manual': return get_manual() elif type(response) is str and response == 'quit': exit(0) else: return response