From d9091851aaecee7a32bb0f654ec2b77798223eda Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Fri, 29 Mar 2024 19:17:22 +0800 Subject: feat(lock): add entrance for ifp --- src/ipm/models/lock.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py index e3e3c17..160db4d 100644 --- a/src/ipm/models/lock.py +++ b/src/ipm/models/lock.py @@ -71,7 +71,7 @@ class PackageLock(IPMLock): else: return False - def get_all(self) -> List["Yggdrasil"]: + def get_all_indexes(self) -> List["Yggdrasil"]: from ipm.models.index import Yggdrasil if "index" not in self._data.keys(): @@ -115,6 +115,13 @@ class PackageLock(IPMLock): self._data.add("package", aot) self.dump() + def get_frozen_package_path(self, name: str, version: str) -> Optional[Path]: + data = self._data.unwrap() + for package in data.get("package", []): + if package["name"] == name and package["version"] == version: + return Path(package["path"]) + return + class ProjectLock(IPMLock): """IPM 项目锁""" @@ -125,8 +132,10 @@ class ProjectLock(IPMLock): ) @staticmethod - def init_from_project(project: "ipk.InfiniProject") -> "ProjectLock": - lock = ProjectLock(project._source_path) + def init_from_project( + project: "ipk.InfiniProject", dist_path: Optional[Path] = None + ) -> "ProjectLock": + lock = ProjectLock(dist_path or project._source_path) lock._data = tomlkit.document() metadata = tomlkit.table() -- cgit v1.2.3-70-g09d2