Skip to content

Commit efecdb4

Browse files
committed
Added bump project.version in pyproject.toml
1 parent f83e325 commit efecdb4

2 files changed

Lines changed: 72 additions & 20 deletions

File tree

remove-json-keys/utils/bump.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,61 @@
1+
import argparse, re, sys
12
from os import path
2-
import re, sys
33
from types import SimpleNamespace as sns
44
import tomli, tomli_w
55

66
# Init logger
77
sys.path.insert(0, path.join(path.dirname(__file__), '../src'))
88
from remove_json_keys.lib import log # type: ignore
9+
msgs = sns(err_invalid_arg='You must pass --<major|minor|patch> as an argument.')
910

1011
# Init project data
1112
pyproject_path = path.join(path.dirname(__file__), '../pyproject.toml')
1213
log.info(f'Loading {pyproject_path}...')
1314
with open(pyproject_path, 'rb') as file : pyproject = tomli.load(file)
1415
project = sns(**pyproject['project'])
1516

16-
def update_changelog_url():
17-
new_ver_tag = f'{project.name}-{project.version}'
17+
def parse_args():
18+
parser = argparse.ArgumentParser(description="Bump versions in pyproject.toml + README.md")
19+
parser.add_argument('--major', action='store_true', help='Bump the major version')
20+
parser.add_argument('--minor', action='store_true', help='Bump the minor version')
21+
parser.add_argument('--patch', action='store_true', help='Bump the patch version')
22+
return parser.parse_args()
23+
24+
def bump_pyproject_versions(bump_type): # project.version + .urls['Changelog']
25+
26+
# Bump project.version
27+
current_ver = project.version
28+
major, minor, patch = map(int, current_ver.split('.'))
29+
if bump_type == 'major' : major += 1 ; minor = 0 ; patch = 0
30+
elif bump_type == 'minor' : minor += 1 ; patch = 0
31+
elif bump_type == 'patch' : patch += 1
32+
else : raise ValueError(msgs.err_invalid_arg)
33+
new_ver = f'{major}.{minor}.{patch}'
34+
pyproject['project']['version'] = new_ver
35+
with open(pyproject_path, 'wb') as file : tomli_w.dump(pyproject, file)
36+
log.success(f"Bumped project.version in pyproject.toml from [{current_ver}] to [{new_ver}]")
37+
38+
# Bump version tag in Changelog URL
39+
new_ver_tag = f'{project.name}-{new_ver}'
1840
new_changelog_url = f"{project.urls['Releases']}/tag/{new_ver_tag}"
19-
log.data(f'Generated changelog URL: {new_changelog_url}')
41+
log.data(f'Generated Changelog URL: {new_changelog_url}')
2042
log.info(f"{ 'Updating' if 'Changelog' in project.urls else 'Adding new' } Changelog URL in pyproject.toml...")
2143
project.urls['Changelog'] = new_changelog_url
22-
pyproject['project'] = vars(project) # update og dict for dumping
2344
with open(pyproject_path, 'wb') as file : tomli_w.dump(pyproject, file)
2445
log.success(f'Bumped Changelog URL version tag to [{new_ver_tag}]!')
2546

26-
def update_readme_versions():
47+
return new_ver
48+
49+
def update_readme_versions(new_ver): # in shield URLs
2750
readme_path = path.join(path.dirname(__file__), '../README.md')
2851
log.info('Updating versions in README.md...')
2952
with open(readme_path, 'r', encoding='utf-8') as file : readme_content = file.read()
30-
updated_readme_content = re.sub(r'\d+\.\d+\.\d+', project.version, readme_content)
53+
updated_readme_content = re.sub(r'\d+\.\d+\.\d+', new_ver, readme_content)
3154
with open(readme_path, 'w', encoding='utf-8') as file : file.write(updated_readme_content)
32-
log.success(f'Updated versions in README URLs to [{project.version}]!')
55+
log.success(f'Updated versions in README URLs to [{new_ver}]!')
3356

34-
update_changelog_url()
35-
update_readme_versions()
57+
# Run MAIN routine
58+
args = parse_args()
59+
bump_type = 'major' if args.major else 'minor' if args.minor else 'patch' if args.patch else None
60+
if not bump_type : raise ValueError(msgs.err_invalid_arg)
61+
update_readme_versions(bump_pyproject_versions(bump_type))

translate-messages/utils/bump.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,61 @@
1+
import argparse, re, sys
12
from os import path
2-
import re, sys
33
from types import SimpleNamespace as sns
44
import tomli, tomli_w
55

66
# Init logger
77
sys.path.insert(0, path.join(path.dirname(__file__), '../src'))
88
from translate_messages.lib import log # type: ignore
9+
msgs = sns(err_invalid_arg='You must pass --<major|minor|patch> as an argument.')
910

1011
# Init project data
1112
pyproject_path = path.join(path.dirname(__file__), '../pyproject.toml')
1213
log.info(f'Loading {pyproject_path}...')
1314
with open(pyproject_path, 'rb') as file : pyproject = tomli.load(file)
1415
project = sns(**pyproject['project'])
1516

16-
def update_changelog_url():
17-
new_ver_tag = f'{project.name}-{project.version}'
17+
def parse_args():
18+
parser = argparse.ArgumentParser(description="Bump versions in pyproject.toml + README.md")
19+
parser.add_argument('--major', action='store_true', help='Bump the major version')
20+
parser.add_argument('--minor', action='store_true', help='Bump the minor version')
21+
parser.add_argument('--patch', action='store_true', help='Bump the patch version')
22+
return parser.parse_args()
23+
24+
def bump_pyproject_versions(bump_type): # project.version + .urls['Changelog']
25+
26+
# Bump project.version
27+
current_ver = project.version
28+
major, minor, patch = map(int, current_ver.split('.'))
29+
if bump_type == 'major' : major += 1 ; minor = 0 ; patch = 0
30+
elif bump_type == 'minor' : minor += 1 ; patch = 0
31+
elif bump_type == 'patch' : patch += 1
32+
else : raise ValueError(msgs.err_invalid_arg)
33+
new_ver = f'{major}.{minor}.{patch}'
34+
pyproject['project']['version'] = new_ver
35+
with open(pyproject_path, 'wb') as file : tomli_w.dump(pyproject, file)
36+
log.success(f"Bumped project.version in pyproject.toml from [{current_ver}] to [{new_ver}]")
37+
38+
# Bump version tag in Changelog URL
39+
new_ver_tag = f'{project.name}-{new_ver}'
1840
new_changelog_url = f"{project.urls['Releases']}/tag/{new_ver_tag}"
19-
log.data(f'Generated changelog URL: {new_changelog_url}')
41+
log.data(f'Generated Changelog URL: {new_changelog_url}')
2042
log.info(f"{ 'Updating' if 'Changelog' in project.urls else 'Adding new' } Changelog URL in pyproject.toml...")
2143
project.urls['Changelog'] = new_changelog_url
22-
pyproject['project'] = vars(project) # update og dict for dumping
2344
with open(pyproject_path, 'wb') as file : tomli_w.dump(pyproject, file)
2445
log.success(f'Bumped Changelog URL version tag to [{new_ver_tag}]!')
2546

26-
def update_readme_versions():
47+
return new_ver
48+
49+
def update_readme_versions(new_ver): # in shield URLs
2750
readme_path = path.join(path.dirname(__file__), '../README.md')
2851
log.info('Updating versions in README.md...')
2952
with open(readme_path, 'r', encoding='utf-8') as file : readme_content = file.read()
30-
updated_readme_content = re.sub(r'\d+\.\d+\.\d+', project.version, readme_content)
53+
updated_readme_content = re.sub(r'\d+\.\d+\.\d+', new_ver, readme_content)
3154
with open(readme_path, 'w', encoding='utf-8') as file : file.write(updated_readme_content)
32-
log.success(f'Updated versions in README URLs to [{project.version}]!')
55+
log.success(f'Updated versions in README URLs to [{new_ver}]!')
3356

34-
update_changelog_url()
35-
update_readme_versions()
57+
# Run MAIN routine
58+
args = parse_args()
59+
bump_type = 'major' if args.major else 'minor' if args.minor else 'patch' if args.patch else None
60+
if not bump_type : raise ValueError(msgs.err_invalid_arg)
61+
update_readme_versions(bump_pyproject_versions(bump_type))

0 commit comments

Comments
 (0)