Decouple from bumpversion
This commit is contained in:
65
semver/bump.py
Normal file
65
semver/bump.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from enum import IntEnum
|
||||
import subprocess, os
|
||||
from semver.logger import logging, logger, console_logger
|
||||
|
||||
|
||||
try:
|
||||
from configparser import ConfigParser
|
||||
except ImportError:
|
||||
# Python < 3
|
||||
from ConfigParser import ConfigParser
|
||||
|
||||
def bump_version(version, index=2, tag_repo = True, update_files=True):
|
||||
v = version.split('.')
|
||||
|
||||
# Bump version
|
||||
v[index] = str(int(v[index]) + 1)
|
||||
|
||||
# Reset subversions
|
||||
i = len(v) - 1
|
||||
while i > index:
|
||||
v[i] = '0'
|
||||
i = i - 1
|
||||
|
||||
# Get new version
|
||||
new_version = '.'.join(v)
|
||||
|
||||
# Tag new version
|
||||
if tag_repo and version != new_version:
|
||||
p = subprocess.Popen(['git', 'tag', new_version], cwd='.')
|
||||
p.wait()
|
||||
|
||||
# Update local files
|
||||
if update_files:
|
||||
update_file_version(new_version, version)
|
||||
|
||||
return new_version
|
||||
|
||||
def update_file_version(new_version, version="0.0.0"):
|
||||
# Open up config file
|
||||
config = ConfigParser()
|
||||
config.read('./.bumpversion.cfg')
|
||||
|
||||
for section in config.sections():
|
||||
if len(section) > 17 and section[0:17] == "bumpversion:file:":
|
||||
file_name = section[17:]
|
||||
if os.path.isfile(file_name):
|
||||
# Get search val from config
|
||||
search_val = config.get(section, "search")
|
||||
search_val = process_config_string(search_val, new_version, version)
|
||||
|
||||
# Get replace val from config
|
||||
replace_val = config.get(section, "replace")
|
||||
replace_val = process_config_string(replace_val, new_version, version)
|
||||
|
||||
# Update replace values in file
|
||||
with open(file_name, 'r') as file:
|
||||
filedata = file.read()
|
||||
filedata =filedata.replace(search_val,replace_val)
|
||||
with open(file_name, 'w') as file:
|
||||
file.write(filedata)
|
||||
else:
|
||||
logger.warning("Tried to version file: `" + file_name + "` but it doesn't exist!")
|
||||
|
||||
def process_config_string(cfg_string, new_version, version):
|
||||
return cfg_string.replace("{new_version}", new_version).replace("{current_version}", version)
|
||||
Reference in New Issue
Block a user