You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.4 KiB
Python

import argparse
import semver
from subprocess import check_output
def main(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)
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())