From e1bc6aa98a86527bd4449df801b42d38bf6044ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Fernando=20S=C3=A1nchez?= Date: Mon, 13 Feb 2017 12:26:27 +0100 Subject: [PATCH] Version 0.0.2 * Restricts mandatory version bumping to the master branch --- balkian_pre_commit/VERSION | 2 +- balkian_pre_commit/branchversion.py | 52 ++++++++++++++++++----------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/balkian_pre_commit/VERSION b/balkian_pre_commit/VERSION index 8acdd82..4e379d2 100644 --- a/balkian_pre_commit/VERSION +++ b/balkian_pre_commit/VERSION @@ -1 +1 @@ -0.0.1 +0.0.2 diff --git a/balkian_pre_commit/branchversion.py b/balkian_pre_commit/branchversion.py index 8b0cdbe..8710fd8 100644 --- a/balkian_pre_commit/branchversion.py +++ b/balkian_pre_commit/branchversion.py @@ -1,31 +1,43 @@ import argparse import semver -import os from subprocess import check_output + def main(argv=None): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*') args = parser.parse_args(argv) - branch_name = check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip().decode() - error = 1 - for fn in args.filenames: - with open(fn) as f: - currentcontent = f.read().strip() - prevcontent = check_output(['git', 'show', 'HEAD:{}'.format(fn)]).strip().decode() - current = semver.parse_version_info(currentcontent) - print('Checking versions: {} -> {}'.format(prevcontent, currentcontent)) - if branch_name == 'master' and current.prerelease: - print('Trying to push a pre-release version to a master branch') - return 1 - elif semver.compare(currentcontent, prevcontent)<1: - print('The new version should be newer than the old one') - return 1 - else: - error = 0 - if error: - print('VERSION files should be bumped in every commit') - return error + gitout = check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + branch_name = gitout.strip().decode() + + if len(args.filenames) > 1: + print('There are more than one VERSION files: ' + '{}'.format(args.filenames)) + return 1 + elif not args.filenames: + if branch_name == 'master': + print('VERSION files should be bumped in every commit to master') + return 2 + else: + return 0 + + fn = args.filenames[0] + with open(fn) as f: + currentcontent = f.read().strip() + gitout = check_output(['git', 'show', 'HEAD:{}'.format(fn)]) + prevcontent = gitout.strip().decode() + current = semver.parse_version_info(currentcontent) + print('Checking versions: {} -> {}'.format(prevcontent, + currentcontent)) + if branch_name == 'master' and current.prerelease: + print('Trying to push a pre-release version to a master branch') + return 1 + elif semver.compare(currentcontent, prevcontent) < 1: + print('The new version should be newer than the old one') + return 1 + else: + return 0 + if __name__ == '__main__': exit(main())