diff options
| author | 2024-03-29 19:17:22 +0800 | |
|---|---|---|
| committer | 2024-03-29 19:17:22 +0800 | |
| commit | d9091851aaecee7a32bb0f654ec2b77798223eda (patch) | |
| tree | 34a38f24b7f4f98fdb5947919fad0ec0486751aa /src | |
| parent | bfa7c2af3aec752b675a40ed8e60577b31c4c9cd (diff) | |
| download | ipm-d9091851aaecee7a32bb0f654ec2b77798223eda.tar.gz ipm-d9091851aaecee7a32bb0f654ec2b77798223eda.zip | |
feat(lock): add entrance for ifp
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipm/models/lock.py | 15 |
1 files 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() |
