summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-01-21 22:43:49 +0800
committer苏向夜 <fu050409@163.com>2024-01-21 22:43:49 +0800
commit8b76d593b0bd59bc6a74dc9f48b7b70dbf6a0808 (patch)
tree2da92ddd6cd731a822685852824dc24ae967f84e /src
parent1c90660a1b6840bc5d1b7a0c2291b22013db85d6 (diff)
downloadipm-8b76d593b0bd59bc6a74dc9f48b7b70dbf6a0808.tar.gz
ipm-8b76d593b0bd59bc6a74dc9f48b7b70dbf6a0808.zip
:bug: fix(lock): fix packages check and allow auto dump after removal
Diffstat (limited to 'src')
-rw-r--r--src/ipm/models/lock.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py
index d7efb7a..d90c690 100644
--- a/src/ipm/models/lock.py
+++ b/src/ipm/models/lock.py
@@ -13,7 +13,7 @@ class IpmLock(metaclass=ABCMeta):
packages: List[Dict[str, Any]]
source_path: Path
- def __init__(self, source_path: StrPath = IPM_PATH / "inifni.lock") -> None:
+ def __init__(self, source_path: StrPath = IPM_PATH / "infini.lock") -> None:
IPM_PATH.mkdir(parents=True, exist_ok=True)
self.source_path = source_path
self.load()
@@ -23,7 +23,7 @@ class IpmLock(metaclass=ABCMeta):
self.metadata = {}
self.packages = []
source_file = self.source_path.open("w", encoding="utf-8")
- source_file.write(ATTENSION + str(self.dumps()))
+ source_file.write(ATTENSION + toml.dumps(self.dumps()))
source_file.close()
else:
loaded_data = toml.load(self.source_path.open("r", encoding="utf-8"))
@@ -31,7 +31,7 @@ class IpmLock(metaclass=ABCMeta):
loaded_data["metadata"] if "metadata" in loaded_data.keys() else {}
)
self.packages = (
- loaded_data["package"] if "package" in loaded_data.keys() else []
+ loaded_data["packages"] if "packages" in loaded_data.keys() else []
)
def dumps(self) -> dict:
@@ -60,14 +60,22 @@ class PackageLock(IpmLock):
)
return self.dump() if dump else ""
- def remove(self, name: str) -> None:
+ def remove(self, name: str, dump: bool = False) -> str:
name = name.strip()
for package in self.packages:
if "name" not in package.keys():
raise SyntaxError("异常的锁文件!")
if package["name"] == name:
self.packages.remove(package)
- return
+ break
+ return self.dump() if dump else ""
+
+ def get_ipk(self, name: str) -> dict | None:
+ name = name.strip()
+ for package in self.packages:
+ if package["name"] == name:
+ return package
+ return None
def has_ipk(self, name: str) -> bool:
name = name.strip()