aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-01-23 16:04:39 +0800
committer苏向夜 <fu050409@163.com>2024-01-23 16:04:39 +0800
commit38c48730c0af75e5c5333628102ee3b47641e8f5 (patch)
treed001fef5834a4a2c880012780c21ea3fb2c2dcc9 /src
parentf1626adff30d4232dc8ff9710190f1e83f4455c6 (diff)
downloadipm-38c48730c0af75e5c5333628102ee3b47641e8f5.tar.gz
ipm-38c48730c0af75e5c5333628102ee3b47641e8f5.zip
:sparkles: feat(lock): new init method
Diffstat (limited to 'src')
-rw-r--r--src/ipm/models/lock.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py
index f1a70b0..14f23d4 100644
--- a/src/ipm/models/lock.py
+++ b/src/ipm/models/lock.py
@@ -247,19 +247,34 @@ class ProjectLock(IpmLock):
def __init__(self, source_path: StrPath | None = None) -> None:
super().__init__(source_path=source_path or Path(".").resolve() / "infini.lock")
+ def _init(self) -> None:
+ # TODO 实现搜索下一级依赖
+ ...
+
+ def init(self) -> None:
+ pkg = ipk.InfiniProject()
+ self.metadata = {
+ "name": pkg.name,
+ "version": pkg.version,
+ "description": pkg.description,
+ "license": pkg.license,
+ }
+ self.requirements = [
+ {"name": name, "version": version or "latest"}
+ for name, version in pkg.requirements.values()
+ ]
+ self.dependencies = [
+ {"name": name, "version": version or "latest"}
+ for name, version in pkg.dependencies.values()
+ ]
+ self._init()
+ self.dumps()
+
def load(self) -> None:
pkg = ipk.InfiniProject()
if not self.source_path.exists():
- self.metadata = {
- "name": pkg.name,
- "version": pkg.version,
- "description": pkg.description,
- "license": pkg.license,
- }
- self.requirements = []
- self.dependencies = []
- self.dumps()
+ self.init()
else:
loaded_data = toml.load(self.source_path.open("r", encoding="utf-8"))