Updated docs
This commit is contained in:
@@ -11,16 +11,16 @@ CPL internal tool to set version from branch name
|
||||
|
||||
"""
|
||||
|
||||
__title__ = 'set_version'
|
||||
__author__ = 'Sven Heidemann'
|
||||
__license__ = 'MIT'
|
||||
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
|
||||
__version__ = '2022.12.0'
|
||||
__title__ = "set_version"
|
||||
__author__ = "Sven Heidemann"
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
|
||||
__version__ = "2022.12.0"
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
|
||||
# imports:
|
||||
# imports:
|
||||
|
||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||
version_info = VersionInfo(major='2022', minor='12', micro='0')
|
||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||
version_info = VersionInfo(major="2022", minor="12", micro="0")
|
||||
|
@@ -16,7 +16,6 @@ from set_version.version_setter_service import VersionSetterService
|
||||
|
||||
|
||||
class Application(ApplicationABC):
|
||||
|
||||
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||
ApplicationABC.__init__(self, config, services)
|
||||
|
||||
@@ -30,15 +29,15 @@ class Application(ApplicationABC):
|
||||
self._configuration.parse_console_arguments(self._services)
|
||||
|
||||
def main(self):
|
||||
Console.write_line('Set versions:')
|
||||
Console.write_line("Set versions:")
|
||||
|
||||
args = self._configuration.additional_arguments
|
||||
version = {}
|
||||
branch = ""
|
||||
suffix = ""
|
||||
force = False
|
||||
if '--force' in args:
|
||||
args.remove('--force')
|
||||
if "--force" in args:
|
||||
args.remove("--force")
|
||||
force = True
|
||||
|
||||
if len(args) > 1:
|
||||
@@ -50,46 +49,50 @@ class Application(ApplicationABC):
|
||||
|
||||
try:
|
||||
branch = self._git_service.get_active_branch_name()
|
||||
Console.write_line(f'Found branch: {branch}')
|
||||
Console.write_line(f"Found branch: {branch}")
|
||||
except Exception as e:
|
||||
Console.error('Branch not found', traceback.format_exc())
|
||||
Console.error("Branch not found", traceback.format_exc())
|
||||
return
|
||||
|
||||
try:
|
||||
if suffix != '':
|
||||
self._configuration.add_json_file(self._workspace.projects[self._workspace.default_project], optional=False, output=False)
|
||||
if suffix != "":
|
||||
self._configuration.add_json_file(
|
||||
self._workspace.projects[self._workspace.default_project], optional=False, output=False
|
||||
)
|
||||
ps: ProjectSettings = self._configuration.get_configuration(ProjectSettings)
|
||||
|
||||
version[VersionSettingsNameEnum.major.value] = ps.version.major
|
||||
version[VersionSettingsNameEnum.minor.value] = ps.version.minor
|
||||
version[VersionSettingsNameEnum.micro.value] = suffix
|
||||
elif branch.startswith('#'):
|
||||
self._configuration.add_json_file(self._workspace.projects[self._workspace.default_project], optional=False, output=False)
|
||||
elif branch.startswith("#"):
|
||||
self._configuration.add_json_file(
|
||||
self._workspace.projects[self._workspace.default_project], optional=False, output=False
|
||||
)
|
||||
ps: ProjectSettings = self._configuration.get_configuration(ProjectSettings)
|
||||
|
||||
version[VersionSettingsNameEnum.major.value] = ps.version.major
|
||||
version[VersionSettingsNameEnum.minor.value] = ps.version.minor
|
||||
version[VersionSettingsNameEnum.micro.value] = f'dev{branch.split("#")[1]}'
|
||||
else:
|
||||
version[VersionSettingsNameEnum.major.value] = branch.split('.')[0]
|
||||
version[VersionSettingsNameEnum.minor.value] = branch.split('.')[1]
|
||||
if len(branch.split('.')) == 2:
|
||||
if suffix == '':
|
||||
suffix = '0'
|
||||
version[VersionSettingsNameEnum.micro.value] = f'{suffix}'
|
||||
version[VersionSettingsNameEnum.major.value] = branch.split(".")[0]
|
||||
version[VersionSettingsNameEnum.minor.value] = branch.split(".")[1]
|
||||
if len(branch.split(".")) == 2:
|
||||
if suffix == "":
|
||||
suffix = "0"
|
||||
version[VersionSettingsNameEnum.micro.value] = f"{suffix}"
|
||||
else:
|
||||
version[VersionSettingsNameEnum.micro.value] = f'{branch.split(".")[2]}{suffix}'
|
||||
except Exception as e:
|
||||
Console.error(f'Branch {branch} does not contain valid version')
|
||||
Console.error(f"Branch {branch} does not contain valid version")
|
||||
return
|
||||
|
||||
diff_paths = []
|
||||
for file in self._git_service.get_diff_files():
|
||||
if file.startswith('tools'):
|
||||
if file.startswith("tools"):
|
||||
continue
|
||||
|
||||
if '/' in file:
|
||||
file = file.split('/')[1]
|
||||
if "/" in file:
|
||||
file = file.split("/")[1]
|
||||
else:
|
||||
file = os.path.basename(os.path.dirname(file))
|
||||
|
||||
@@ -106,12 +109,16 @@ class Application(ApplicationABC):
|
||||
skipped.append(project)
|
||||
continue
|
||||
|
||||
Console.write_line(f'Set dependencies {self._version_pipe.transform(version)} for {project}')
|
||||
self._version_setter.set_dependencies(self._workspace.projects[project], version, 'Dependencies', skipped=skipped)
|
||||
self._version_setter.set_dependencies(self._workspace.projects[project], version, 'DevDependencies', skipped=skipped)
|
||||
Console.write_line(f"Set dependencies {self._version_pipe.transform(version)} for {project}")
|
||||
self._version_setter.set_dependencies(
|
||||
self._workspace.projects[project], version, "Dependencies", skipped=skipped
|
||||
)
|
||||
self._version_setter.set_dependencies(
|
||||
self._workspace.projects[project], version, "DevDependencies", skipped=skipped
|
||||
)
|
||||
|
||||
Console.write_line(f'Set version {self._version_pipe.transform(version)} for {project}')
|
||||
Console.write_line(f"Set version {self._version_pipe.transform(version)} for {project}")
|
||||
self._version_setter.set_version(self._workspace.projects[project], version)
|
||||
except Exception as e:
|
||||
Console.error('Version could not be set', traceback.format_exc())
|
||||
Console.error("Version could not be set", traceback.format_exc())
|
||||
return
|
||||
|
@@ -5,7 +5,6 @@ from git import Repo
|
||||
|
||||
|
||||
class GitService:
|
||||
|
||||
def __init__(self, env: ApplicationEnvironmentABC):
|
||||
self._env = env
|
||||
self._repo = Repo(env.working_directory)
|
||||
|
@@ -10,5 +10,5 @@ def main():
|
||||
app_builder.build().run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@@ -11,19 +11,22 @@ from set_version.version_setter_service import VersionSetterService
|
||||
|
||||
|
||||
class Startup(StartupABC):
|
||||
|
||||
def __init__(self):
|
||||
StartupABC.__init__(self)
|
||||
|
||||
def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC:
|
||||
configuration.add_json_file('cpl-workspace.json', optional=True, output=False)
|
||||
def configure_configuration(
|
||||
self, configuration: ConfigurationABC, environment: ApplicationEnvironment
|
||||
) -> ConfigurationABC:
|
||||
configuration.add_json_file("cpl-workspace.json", optional=True, output=False)
|
||||
if configuration.get_configuration(WorkspaceSettings) is None:
|
||||
environment.set_working_directory(os.path.join(environment.working_directory, '../../'))
|
||||
configuration.add_json_file('cpl-workspace.json', optional=False, output=False)
|
||||
environment.set_working_directory(os.path.join(environment.working_directory, "../../"))
|
||||
configuration.add_json_file("cpl-workspace.json", optional=False, output=False)
|
||||
|
||||
return configuration
|
||||
|
||||
def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC:
|
||||
def configure_services(
|
||||
self, services: ServiceCollectionABC, environment: ApplicationEnvironment
|
||||
) -> ServiceProviderABC:
|
||||
services.add_pipes()
|
||||
services.add_singleton(GitService)
|
||||
services.add_transient(VersionSetterService)
|
||||
|
@@ -7,13 +7,12 @@ from cpl_core.utils import String
|
||||
|
||||
|
||||
class VersionSetterService:
|
||||
|
||||
def __init__(self, env: ApplicationEnvironmentABC):
|
||||
self._env = env
|
||||
|
||||
def _read_file(self, file: str) -> dict:
|
||||
project_json = {}
|
||||
with open(os.path.join(self._env.working_directory, file), 'r', encoding='utf-8') as f:
|
||||
with open(os.path.join(self._env.working_directory, file), "r", encoding="utf-8") as f:
|
||||
# load json
|
||||
project_json = json.load(f)
|
||||
f.close()
|
||||
@@ -21,37 +20,43 @@ class VersionSetterService:
|
||||
return project_json
|
||||
|
||||
def _write_file(self, file: str, project_json: dict):
|
||||
with open(os.path.join(self._env.working_directory, file), 'w', encoding='utf-8') as f:
|
||||
with open(os.path.join(self._env.working_directory, file), "w", encoding="utf-8") as f:
|
||||
f.write(json.dumps(project_json, indent=2))
|
||||
f.close()
|
||||
|
||||
def set_version(self, file: str, version: dict):
|
||||
project_json = self._read_file(file)
|
||||
project_json['ProjectSettings']['Version'] = version
|
||||
project_json["ProjectSettings"]["Version"] = version
|
||||
self._write_file(file, project_json)
|
||||
|
||||
def set_dependencies(self, file: str, version: dict, key: str, skipped=None):
|
||||
project_json = self._read_file(file)
|
||||
if key not in project_json['ProjectSettings']:
|
||||
project_json['ProjectSettings'][key] = []
|
||||
if key not in project_json["ProjectSettings"]:
|
||||
project_json["ProjectSettings"][key] = []
|
||||
|
||||
dependencies = project_json['ProjectSettings'][key]
|
||||
dependencies = project_json["ProjectSettings"][key]
|
||||
new_deps = []
|
||||
for dependency in dependencies:
|
||||
if not dependency.startswith('cpl-'):
|
||||
if not dependency.startswith("cpl-"):
|
||||
new_deps.append(dependency)
|
||||
continue
|
||||
|
||||
dep_version = dependency.split('=')[1]
|
||||
dep_name = dependency.split('=')[0]
|
||||
if dep_name[len(dep_name)-1] not in ascii_letters:
|
||||
dep_name = dep_name[:len(dep_name)-1]
|
||||
dep_version = dependency.split("=")[1]
|
||||
dep_name = dependency.split("=")[0]
|
||||
if dep_name[len(dep_name) - 1] not in ascii_letters:
|
||||
dep_name = dep_name[: len(dep_name) - 1]
|
||||
|
||||
if skipped is not None and (dep_name in skipped or String.convert_to_snake_case(dep_name) in skipped) or dep_version == '':
|
||||
if (
|
||||
skipped is not None
|
||||
and (dep_name in skipped or String.convert_to_snake_case(dep_name) in skipped)
|
||||
or dep_version == ""
|
||||
):
|
||||
new_deps.append(dependency)
|
||||
continue
|
||||
|
||||
new_deps.append(dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}'))
|
||||
new_deps.append(
|
||||
dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}')
|
||||
)
|
||||
|
||||
project_json['ProjectSettings'][key] = new_deps
|
||||
project_json["ProjectSettings"][key] = new_deps
|
||||
self._write_file(file, project_json)
|
||||
|
Reference in New Issue
Block a user