36 lines
1.4 KiB
Python
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
|