sh_cpl/tools/set_version/version_setter_service.py

37 lines
1.2 KiB
Python

import json
import os
from cpl_core.console import Console
from cpl_core.environment import ApplicationEnvironmentABC
class VersionSetterService:
def __init__(self, env: ApplicationEnvironmentABC):
self._env = env
def set_version(self, file: str, version: dict):
project_json = {}
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()
project_json['ProjectSettings']['Version'] = version
dependencies = project_json['ProjectSettings']['Dependencies']
new_deps = []
for dependency in dependencies:
if not dependency.startswith('cpl-'):
new_deps.append(dependency)
continue
dep_version = dependency.split('=')[1]
new_deps.append(dependency.replace(dep_version, f'{version["Major"]}.{version["Minor"]}.{version["Micro"]}'))
project_json['ProjectSettings']['Dependencies'] = new_deps
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()