From df2c2b5b56a98ce9c5b0d1b8ab1e65cfc6f87d3b Mon Sep 17 00:00:00 2001 From: edraft Date: Sun, 19 Oct 2025 19:56:59 +0200 Subject: [PATCH] Workspace check project existence --- cpl.workspace.json | 3 +-- src/cli/cpl/cli/model/workspace.py | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/cpl.workspace.json b/cpl.workspace.json index c45ad1ab..b0e9f4da 100644 --- a/cpl.workspace.json +++ b/cpl.workspace.json @@ -2,8 +2,7 @@ "name": "cpl", "projects": [ "src/cli/cpl.project.json", - "src/core/cpl.project.json", - "test/cpl.project.json" + "src/core/cpl.project.json" ], "defaultProject": "cpl-cli", "scripts": { diff --git a/src/cli/cpl/cli/model/workspace.py b/src/cli/cpl/cli/model/workspace.py index a80c64d7..b991190c 100644 --- a/src/cli/cpl/cli/model/workspace.py +++ b/src/cli/cpl/cli/model/workspace.py @@ -1,3 +1,4 @@ +from pathlib import Path from typing import Optional, List, Dict from cpl.cli.model.cpl_structure_model import CPLStructureModel @@ -28,6 +29,20 @@ class Workspace(CPLStructureModel): self._name = name self._projects = projects self._default_project = default_project + + self._actual_projects = [] + self._project_names = [] + for project in projects: + if Path(project).is_dir() or not Path(project).exists(): + raise ValueError(f"Project path '{project}' does not exist or is a directory.") + + p = Project.from_file(project) + self._actual_projects.append(p) + self._project_names.append(p.name) + + if default_project is not None and default_project not in self._project_names: + raise ValueError(f"Default project '{default_project}' not found in workspace projects.") + self._scripts = scripts @property @@ -48,11 +63,11 @@ class Workspace(CPLStructureModel): @property def actual_projects(self) -> List[Project]: - return [Project.from_file(p) for p in self._projects] + return self._actual_projects @property def project_names(self) -> List[str]: - return [Project.from_file(p).name for p in self._projects] + return self._project_names @property def default_project(self) -> Optional[str]: