2021-08-07 11:21:09 +00:00
|
|
|
"""
|
|
|
|
On release, ensure that the release tag matches the InvenTree version number!
|
|
|
|
"""
|
|
|
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import re
|
|
|
|
import os
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
|
|
version_file = os.path.join(here, '..', 'InvenTree', 'InvenTree', 'version.py')
|
|
|
|
|
2021-10-10 23:19:59 +00:00
|
|
|
version = None
|
|
|
|
|
2021-08-07 11:21:09 +00:00
|
|
|
with open(version_file, 'r') as f:
|
|
|
|
|
2021-10-10 23:19:59 +00:00
|
|
|
text = f.read()
|
|
|
|
|
|
|
|
# Extract the InvenTree software version
|
|
|
|
results = re.findall(r'INVENTREE_SW_VERSION = "(.*)"', text)
|
2021-08-07 11:21:09 +00:00
|
|
|
|
|
|
|
if not len(results) == 1:
|
|
|
|
print(f"Could not find INVENTREE_SW_VERSION in {version_file}")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
version = results[0]
|
|
|
|
|
2021-10-10 23:19:59 +00:00
|
|
|
print(f"InvenTree Version: '{version}'")
|
|
|
|
|
2021-08-07 11:21:09 +00:00
|
|
|
parser = argparse.ArgumentParser()
|
2021-09-12 11:17:56 +00:00
|
|
|
parser.add_argument('-t', '--tag', help='Compare against specified version tag', action='store')
|
|
|
|
parser.add_argument('-r', '--release', help='Check that this is a release version', action='store_true')
|
|
|
|
parser.add_argument('-d', '--dev', help='Check that this is a development version', action='store_true')
|
2021-09-12 11:36:14 +00:00
|
|
|
parser.add_argument('-b', '--branch', help='Check against a particular branch', action='store')
|
2021-08-07 11:21:09 +00:00
|
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
2021-09-12 11:36:14 +00:00
|
|
|
if args.branch:
|
|
|
|
"""
|
|
|
|
Version number requirement depends on format of branch
|
|
|
|
|
|
|
|
'master': development branch
|
|
|
|
'stable': release branch
|
|
|
|
"""
|
|
|
|
|
|
|
|
print(f"Checking version number for branch '{args.branch}'")
|
|
|
|
|
|
|
|
if args.branch == 'master':
|
2021-09-12 12:08:51 +00:00
|
|
|
print("- This is a development branch")
|
2021-09-12 11:36:14 +00:00
|
|
|
args.dev = True
|
|
|
|
elif args.branch == 'stable':
|
2021-09-12 12:08:51 +00:00
|
|
|
print("- This is a stable release branch")
|
2021-09-12 11:36:14 +00:00
|
|
|
args.release = True
|
|
|
|
|
2021-09-12 11:17:56 +00:00
|
|
|
if args.dev:
|
|
|
|
"""
|
|
|
|
Check that the current verrsion number matches the "development" format
|
|
|
|
e.g. "0.5 dev"
|
|
|
|
"""
|
|
|
|
|
2021-11-19 20:50:41 +00:00
|
|
|
print("Checking development branch")
|
2021-10-10 23:19:59 +00:00
|
|
|
|
2021-09-12 11:17:56 +00:00
|
|
|
pattern = "^\d+(\.\d+)+ dev$"
|
|
|
|
|
|
|
|
result = re.match(pattern, version)
|
|
|
|
|
|
|
|
if result is None:
|
|
|
|
print(f"Version number '{version}' does not match required pattern for development branch")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
elif args.release:
|
|
|
|
"""
|
|
|
|
Check that the current version number matches the "release" format
|
|
|
|
e.g. "0.5.1"
|
|
|
|
"""
|
|
|
|
|
2021-11-19 20:50:41 +00:00
|
|
|
print("Checking release branch")
|
2021-10-10 23:19:59 +00:00
|
|
|
|
2021-09-12 11:17:56 +00:00
|
|
|
pattern = "^\d+(\.\d+)+$"
|
|
|
|
|
|
|
|
result = re.match(pattern, version)
|
|
|
|
|
|
|
|
if result is None:
|
|
|
|
print(f"Version number '{version}' does not match required pattern for stable branch")
|
2021-09-12 11:36:14 +00:00
|
|
|
sys.exit(1)
|
2021-09-12 11:17:56 +00:00
|
|
|
|
|
|
|
if args.tag:
|
|
|
|
if not args.tag == version:
|
|
|
|
print(f"Release tag '{args.tag}' does not match INVENTREE_SW_VERSION '{version}'")
|
|
|
|
sys.exit(1)
|
2021-08-07 11:21:09 +00:00
|
|
|
|
2021-10-10 23:21:36 +00:00
|
|
|
sys.exit(0)
|