Updated docs
This commit is contained in:
@@ -18,14 +18,15 @@ from cpl_cli.configuration.settings_helper import SettingsHelper
|
||||
|
||||
|
||||
class UpdateService(CommandABC):
|
||||
|
||||
def __init__(self,
|
||||
config: ConfigurationABC,
|
||||
env: ApplicationEnvironmentABC,
|
||||
build_settings: BuildSettings,
|
||||
project_settings: ProjectSettings,
|
||||
cli_settings: CLISettings,
|
||||
migrations: MigrationServiceABC):
|
||||
def __init__(
|
||||
self,
|
||||
config: ConfigurationABC,
|
||||
env: ApplicationEnvironmentABC,
|
||||
build_settings: BuildSettings,
|
||||
project_settings: ProjectSettings,
|
||||
cli_settings: CLISettings,
|
||||
migrations: MigrationServiceABC,
|
||||
):
|
||||
"""
|
||||
Service for the CLI command update
|
||||
:param config:
|
||||
@@ -44,14 +45,16 @@ class UpdateService(CommandABC):
|
||||
self._migrations = migrations
|
||||
self._is_simulation = False
|
||||
|
||||
self._project_file = f'{self._project_settings.name}.json'
|
||||
self._project_file = f"{self._project_settings.name}.json"
|
||||
|
||||
@property
|
||||
def help_message(self) -> str:
|
||||
return textwrap.dedent("""\
|
||||
return textwrap.dedent(
|
||||
"""\
|
||||
Updates the CPL and project dependencies.
|
||||
Usage: cpl update
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
||||
def _collect_project_dependencies(self) -> list[tuple]:
|
||||
"""
|
||||
@@ -61,8 +64,8 @@ class UpdateService(CommandABC):
|
||||
dependencies = []
|
||||
for package in [*self._project_settings.dependencies, *self._project_settings.dev_dependencies]:
|
||||
name = package
|
||||
if '==' in package:
|
||||
name = package.split('==')[0]
|
||||
if "==" in package:
|
||||
name = package.split("==")[0]
|
||||
|
||||
dependencies.append((package, name))
|
||||
|
||||
@@ -76,17 +79,17 @@ class UpdateService(CommandABC):
|
||||
for package, name in dependencies:
|
||||
Pip.install(
|
||||
name,
|
||||
'--upgrade',
|
||||
'--upgrade-strategy',
|
||||
'eager',
|
||||
"--upgrade",
|
||||
"--upgrade-strategy",
|
||||
"eager",
|
||||
source=self._cli_settings.pip_path,
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
|
||||
new_package = Pip.get_package(name)
|
||||
if new_package is None:
|
||||
Console.error(f'Update for package {package} failed')
|
||||
Console.error(f"Update for package {package} failed")
|
||||
continue
|
||||
|
||||
self._project_json_update_dependency(package, new_package)
|
||||
@@ -97,27 +100,32 @@ class UpdateService(CommandABC):
|
||||
:return:
|
||||
"""
|
||||
dependencies = Console.spinner(
|
||||
'Collecting installed dependencies', self._collect_project_dependencies,
|
||||
"Collecting installed dependencies",
|
||||
self._collect_project_dependencies,
|
||||
text_foreground_color=ForegroundColorEnum.green,
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan,
|
||||
)
|
||||
|
||||
Console.spinner(
|
||||
'Updating installed dependencies', self._update_project_dependencies, dependencies,
|
||||
"Updating installed dependencies",
|
||||
self._update_project_dependencies,
|
||||
dependencies,
|
||||
text_foreground_color=ForegroundColorEnum.green,
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan,
|
||||
)
|
||||
|
||||
if 'cpl-cli' in [y for x, y in dependencies]:
|
||||
if "cpl-cli" in [y for x, y in dependencies]:
|
||||
import cpl_cli
|
||||
|
||||
Console.spinner(
|
||||
'Running migrations', self._migrations.migrate_from, cpl_cli.__version__,
|
||||
"Running migrations",
|
||||
self._migrations.migrate_from,
|
||||
cpl_cli.__version__,
|
||||
text_foreground_color=ForegroundColorEnum.green,
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan,
|
||||
)
|
||||
|
||||
Console.write_line(f'Found {len(self._project_settings.dependencies)} dependencies.')
|
||||
Console.write_line(f"Found {len(self._project_settings.dependencies)} dependencies.")
|
||||
|
||||
@staticmethod
|
||||
def _check_outdated():
|
||||
@@ -126,19 +134,20 @@ class UpdateService(CommandABC):
|
||||
:return:
|
||||
"""
|
||||
table_str: bytes = Console.spinner(
|
||||
'Analyzing for available package updates', Pip.get_outdated,
|
||||
"Analyzing for available package updates",
|
||||
Pip.get_outdated,
|
||||
text_foreground_color=ForegroundColorEnum.green,
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan
|
||||
spinner_foreground_color=ForegroundColorEnum.cyan,
|
||||
)
|
||||
|
||||
table = str(table_str, 'utf-8').split('\n')
|
||||
if len(table) > 1 and table[0] != '':
|
||||
Console.write_line('\tAvailable updates for packages:')
|
||||
table = str(table_str, "utf-8").split("\n")
|
||||
if len(table) > 1 and table[0] != "":
|
||||
Console.write_line("\tAvailable updates for packages:")
|
||||
for row in table:
|
||||
Console.write_line(f'\t{row}')
|
||||
Console.write_line(f"\t{row}")
|
||||
|
||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
||||
Console.write_line(f'\tUpdate with {Pip.get_executable()} -m pip install --upgrade <package>')
|
||||
Console.write_line(f"\tUpdate with {Pip.get_executable()} -m pip install --upgrade <package>")
|
||||
Console.set_foreground_color(ForegroundColorEnum.default)
|
||||
|
||||
def _project_json_update_dependency(self, old_package: str, new_package: str):
|
||||
@@ -153,20 +162,20 @@ class UpdateService(CommandABC):
|
||||
|
||||
if old_package in self._project_settings.dependencies:
|
||||
index = self._project_settings.dependencies.index(old_package)
|
||||
if '/' in new_package:
|
||||
new_package = new_package.split('/')[0]
|
||||
if "/" in new_package:
|
||||
new_package = new_package.split("/")[0]
|
||||
|
||||
if '\r' in new_package:
|
||||
new_package = new_package.replace('\r', '')
|
||||
if "\r" in new_package:
|
||||
new_package = new_package.replace("\r", "")
|
||||
|
||||
self._project_settings.dependencies[index] = new_package
|
||||
|
||||
config = {
|
||||
ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings),
|
||||
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
||||
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings),
|
||||
}
|
||||
|
||||
with open(os.path.join(self._env.working_directory, self._project_file), 'w') as project:
|
||||
with open(os.path.join(self._env.working_directory, self._project_file), "w") as project:
|
||||
project.write(json.dumps(config, indent=2))
|
||||
project.close()
|
||||
|
||||
@@ -176,22 +185,22 @@ class UpdateService(CommandABC):
|
||||
:param args:
|
||||
:return:
|
||||
"""
|
||||
if 'simulate' in args:
|
||||
args.remove('simulate')
|
||||
Console.write_line('Running in simulation mode:')
|
||||
if "simulate" in args:
|
||||
args.remove("simulate")
|
||||
Console.write_line("Running in simulation mode:")
|
||||
self._is_simulation = True
|
||||
|
||||
if 'cpl-prod' in args:
|
||||
args.remove('cpl-prod')
|
||||
self._cli_settings.from_dict({'PipPath': 'https://pip.sh-edraft.de'})
|
||||
if "cpl-prod" in args:
|
||||
args.remove("cpl-prod")
|
||||
self._cli_settings.from_dict({"PipPath": "https://pip.sh-edraft.de"})
|
||||
|
||||
if 'cpl-exp' in args:
|
||||
args.remove('cpl-exp')
|
||||
self._cli_settings.from_dict({'PipPath': 'https://pip-exp.sh-edraft.de'})
|
||||
if "cpl-exp" in args:
|
||||
args.remove("cpl-exp")
|
||||
self._cli_settings.from_dict({"PipPath": "https://pip-exp.sh-edraft.de"})
|
||||
|
||||
if 'cpl-dev' in args:
|
||||
args.remove('cpl-dev')
|
||||
self._cli_settings.from_dict({'PipPath': 'https://pip-dev.sh-edraft.de'})
|
||||
if "cpl-dev" in args:
|
||||
args.remove("cpl-dev")
|
||||
self._cli_settings.from_dict({"PipPath": "https://pip-dev.sh-edraft.de"})
|
||||
|
||||
VenvHelper.init_venv(False, self._env, self._project_settings)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user