aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-29 19:17:22 +0800
committer苏向夜 <fu050409@163.com>2024-03-29 19:17:22 +0800
commitd9091851aaecee7a32bb0f654ec2b77798223eda (patch)
tree34a38f24b7f4f98fdb5947919fad0ec0486751aa
parentbfa7c2af3aec752b675a40ed8e60577b31c4c9cd (diff)
downloadipm-d9091851aaecee7a32bb0f654ec2b77798223eda.tar.gz
ipm-d9091851aaecee7a32bb0f654ec2b77798223eda.zip
feat(lock): add entrance for ifp
-rw-r--r--src/ipm/models/lock.py15
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()