summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-01-21 18:06:56 +0800
committer苏向夜 <fu050409@163.com>2024-01-21 18:06:56 +0800
commit16d1bd06455f506df84340432b54e1a1d2e9e940 (patch)
tree81f309824b6743ec8c5cb0bf532d71d07d127e0c
parenta184d2f54c84e13c3ec45d7fdba9d36727931bf2 (diff)
downloadipm-16d1bd06455f506df84340432b54e1a1d2e9e940.tar.gz
ipm-16d1bd06455f506df84340432b54e1a1d2e9e940.zip
:fix: fix(lock): fix lock error occured in file iov0.1.0-alpha.4
-rw-r--r--pyproject.toml2
-rw-r--r--src/ipm/api.py2
-rw-r--r--src/ipm/models/lock.py17
3 files changed, 16 insertions, 5 deletions
diff --git a/pyproject.toml b/pyproject.toml
index b02c6f9..02e23a4 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "ipm"
-version = "0.1.0-alpha.3"
+version = "0.1.0-alpha.4"
description = "Infini 包管理器"
authors = [
{ name = "苏向夜", email = "fu050409@163.com" },
diff --git a/src/ipm/api.py b/src/ipm/api.py
index 3853faa..47f83d2 100644
--- a/src/ipm/api.py
+++ b/src/ipm/api.py
@@ -97,7 +97,7 @@ def install(uri: str, index: str = "", echo: bool = False) -> None:
raise # TODO
info(f"开始安装[{temp_ipk.name}]中...", echo)
- ipk = extract(STORAGE / temp_ipk.source_path, SRC_HOME, echo)
+ ipk = extract(STORAGE / temp_ipk.name / temp_ipk.default_name, SRC_HOME, echo)
info("正在处理全局包锁...")
lock.add(ipk, dump=True)
info("全局锁已处理完毕.")
diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py
index 78f4921..9d474a8 100644
--- a/src/ipm/models/lock.py
+++ b/src/ipm/models/lock.py
@@ -20,17 +20,28 @@ class IpmLock(metaclass=ABCMeta):
def load(self):
if not self.source_path.exists():
- self.source_path.write_text(ATTENSION)
+ self.metadata = {}
self.packages = {}
+ source_file = self.source_path.open("w", encoding="utf-8")
+ source_file.write(ATTENSION + str(self.dumps()))
+ source_file.close()
else:
loaded_data = toml.load(self.source_path.open("r", encoding="utf-8"))
- self.packages = loaded_data["package"]
+ self.metadata = (
+ loaded_data["metadata"] if "metadata" in loaded_data.keys() else {}
+ )
+ self.packages = (
+ loaded_data["package"] if "package" in loaded_data.keys() else []
+ )
def dumps(self) -> dict:
return {"metadata": self.metadata, "packages": self.packages}
def dump(self) -> str:
- return toml.dump(self.source_path.open("w+", encoding="utf-8"))
+ data_to_dump = ATTENSION + toml.dumps(self.dumps())
+ source_file = self.source_path.open("w", encoding="utf-8")
+ source_file.write(data_to_dump)
+ source_file.close()
class PackageLock(IpmLock):