Files
cpl/src/cpl_cli/validators/project_validator.py
2023-02-20 15:55:20 +01:00

36 lines
1.4 KiB
Python

import os
from cpl_cli import Error
from cpl_cli.configuration import WorkspaceSettings, ProjectSettings
from cpl_core.configuration import ConfigurationABC
from cpl_core.configuration.validator_abc import ValidatorABC
from cpl_core.environment import ApplicationEnvironmentABC
class ProjectValidator(ValidatorABC):
def __init__(
self,
config: ConfigurationABC,
env: ApplicationEnvironmentABC,
workspace: WorkspaceSettings,
project: ProjectSettings,
):
self._config: ConfigurationABC = config
self._env: ApplicationEnvironmentABC = env
self._workspace: WorkspaceSettings = workspace
self._project: ProjectSettings = project
ValidatorABC.__init__(self)
def validate(self) -> bool:
if self._project is None and self._workspace is not None:
project = self._workspace.projects[self._workspace.default_project]
self._config.add_json_file(project, optional=True, output=False)
self._project = self._config.get_configuration(ProjectSettings)
self._env.set_working_directory(os.path.join(self._env.working_directory, os.path.dirname(project)))
result = self._project is not None or self._workspace is not None
if not result:
Error.error("The command requires to be run in an CPL project, but a project could not be found.")
return result