Created
May 8, 2019 20:04
-
-
Save maurobaraldi/1a821a7adcdb034988308e19da5b1eda to your computer and use it in GitHub Desktop.
Bump version from YAML files. Used to bump version form Helm chart files.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import yaml | |
def version(filename): | |
'''Load version from Chart.yaml file.''' | |
with open(filename, 'r') as f: | |
return yaml.load(f).get('version') | |
def set(filename, major, minor, patch): | |
''' | |
Set version following Semantic Versioning | |
More about SemVer https://semver.org/spec/v2.0.0.html | |
''' | |
version = '{}.{}.{}'.format(major, minor, patch) | |
with open(filename, 'r+') as f: | |
chart = yaml.load(f) | |
chart['version'] = version | |
with open(filename, 'w') as f: | |
yaml.dump(chart, f, default_flow_style=False) | |
return version | |
def bump(filename, ver, inc, num): | |
''' | |
Bump version. | |
Args: | |
- ver = version to be bumped | |
- inc = major, minor, patch | |
- num = number to increment to current version. | |
Ex: bump(filename, '1.2.2', 'patch', 1) | |
> '1.2.3' | |
''' | |
major, minor, patch = ver.split('.') | |
if inc == 'major': major = int(major) + num | |
if inc == 'minor': minor = int(minor) + num | |
if inc == 'patch': patch = int(patch) + num | |
set(filename, major, minor, patch) | |
print('New version: {}.{}.{}'.format(major, minor, patch)) | |
if __name__ == '__main__': | |
import argparse | |
parser = argparse.ArgumentParser() | |
parser.add_argument('filename') | |
parser.add_argument('release') | |
parser.add_argument('number') | |
args = parser.parse_args() | |
current = version(args.filename) | |
release = args.release | |
number = args.number | |
bump(args.filename, current, release, int(number)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage
python bumpv.py path/to/Chart.yaml patch 1
python bumpv.py path/to/Chart.yaml minor 1
python bumpv.py path/to/Chart.yaml major 1