Remove print statement fromt he increase_version module. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
166 lines
4.5 KiB
Python
Executable File
166 lines
4.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from __future__ import print_function, unicode_literals
|
|
|
|
import doctest
|
|
import re
|
|
import sys
|
|
|
|
import mayan
|
|
|
|
|
|
VERSION_PART_MAJOR = 0
|
|
VERSION_PART_MINOR = 1
|
|
VERSION_PART_MICRO = 2
|
|
|
|
|
|
class Version(object):
|
|
"""
|
|
>>> Version('1')
|
|
Version: 1
|
|
>>> Version('1.0')
|
|
Version: 1.0
|
|
>>> Version('1.3.2')
|
|
Version: 1.3.2
|
|
>>> Version('1').increment_part(part=VERSION_PART_MAJOR)
|
|
Version: 2
|
|
>>> Version('1').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1.1
|
|
>>> Version('1').increment_part(part=VERSION_PART_MICRO)
|
|
Version: 1.0.1
|
|
>>> Version('1rc').increment_part(part=VERSION_PART_MAJOR)
|
|
Version: 2rc
|
|
>>> Version('1rc2').increment_part(part=VERSION_PART_MAJOR)
|
|
Version: 1rc3
|
|
>>> Version('1rc0').increment_part(part=VERSION_PART_MAJOR)
|
|
Version: 1rc1
|
|
>>> Version('1.rc0').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1.rc1
|
|
>>> Version('1.0.rc1').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1.1
|
|
>>> Version('1.0.rc1').increment_part(part=VERSION_PART_MICRO)
|
|
Version: 1.0.rc2
|
|
>>> Version('1rc').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1rc.1
|
|
>>> Version('1rc').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1rc.1
|
|
>>> Version('1rc').increment_part(part=VERSION_PART_MICRO)
|
|
Version: 1rc.0.1
|
|
>>> Version('1.rc1').increment_part(part=VERSION_PART_MINOR)
|
|
Version: 1.rc2
|
|
>>> Version('1.rc1').increment_part(part=VERSION_PART_MICRO)
|
|
Version: 1.rc1.1
|
|
>>> Version('1.1.rc1').increment_part(part=VERSION_PART_MICRO)
|
|
Version: 1.1.rc2
|
|
>>> Version('1.2.3').increment_major()
|
|
Version: 2
|
|
>>> Version('1.2.3').increment_minor()
|
|
Version: 1.3
|
|
>>> Version('1.2.3').increment_micro()
|
|
Version: 1.2.4
|
|
"""
|
|
def __init__(self, version_string):
|
|
self._version_string = version_string
|
|
self._version_parts = version_string.split('.')
|
|
|
|
def _get_version_part(self, index):
|
|
try:
|
|
return self._version_parts[index]
|
|
except IndexError:
|
|
return 0
|
|
|
|
def __repr__(self):
|
|
return 'Version: {}'.format(self.get_version_string())
|
|
|
|
def increment_major(self):
|
|
return self.increment_part(part=VERSION_PART_MAJOR)
|
|
|
|
def increment_minor(self):
|
|
return self.increment_part(part=VERSION_PART_MINOR)
|
|
|
|
def increment_micro(self):
|
|
return self.increment_part(part=VERSION_PART_MICRO)
|
|
|
|
def increment_part(self, part):
|
|
# Fill version parts if the requested part is lower than what is
|
|
# available
|
|
self._version_parts.extend(
|
|
['0'] * (part - len(self._version_parts) + 1)
|
|
)
|
|
|
|
try:
|
|
version_part = self._version_parts[part]
|
|
except IndexError:
|
|
part_numeric_post = ''
|
|
part_numeric_pre = ''
|
|
part_text = ''
|
|
else:
|
|
part_numeric_pre, part_text, part_numeric_post = re.findall(
|
|
'^(\d+)*([A-Za-z]+)*(\d+)*$', version_part
|
|
)[0]
|
|
|
|
if part_numeric_post:
|
|
part_numeric_post = int(part_numeric_post) + 1
|
|
else:
|
|
part_numeric_pre = int(part_numeric_pre) + 1
|
|
|
|
self._version_parts[part] = '{}{}{}'.format(
|
|
part_numeric_pre, part_text, part_numeric_post
|
|
)
|
|
|
|
# Discard version parts lower than what is being increased
|
|
self._version_parts = self._version_parts[0:part + 1]
|
|
self._version_string = '.'.join(self._version_parts)
|
|
|
|
return self
|
|
|
|
def get_version_string(self):
|
|
return self._version_string
|
|
|
|
@property
|
|
def major(self):
|
|
return self._get_version_part(VERSION_PART_MAJOR)
|
|
|
|
@property
|
|
def minor(self):
|
|
return self._get_version_part(VERSION_PART_MINOR)
|
|
|
|
@property
|
|
def micro(self):
|
|
return self._get_version_part(VERSION_PART_MICRO)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Remove comment to run tests
|
|
# doctest.testmod()
|
|
# exit(0)
|
|
|
|
if len(sys.argv) == 1:
|
|
print(
|
|
'usage: <part to increase [major, minor, micro]>'
|
|
)
|
|
exit(0)
|
|
|
|
if len(sys.argv) < 3:
|
|
print('Insufficient arguments')
|
|
exit(1)
|
|
|
|
version_string = sys.argv[1]
|
|
if version_string == '-':
|
|
version_string = sys.stdin.read().replace('\n', '')
|
|
|
|
version = Version(version_string)
|
|
part = sys.argv[2].lower()
|
|
|
|
if part == 'major':
|
|
version.increment_major()
|
|
elif part == 'minor':
|
|
version.increment_minor()
|
|
elif part == 'micro':
|
|
version.increment_micro()
|
|
else:
|
|
print('Unknown part')
|
|
exit(1)
|
|
|
|
print(version.get_version_string())
|