aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-01-22 19:14:02 +0800
committer苏向夜 <fu050409@163.com>2024-01-22 19:14:02 +0800
commit67b9920264b636b079a65b4f78c71310018adb53 (patch)
treed2406df277b9461d7dd2dce6781e3f703a88b83c /src
parent1d21288e44001021da1f37b7d061540f6a56190f (diff)
downloadipm-67b9920264b636b079a65b4f78c71310018adb53.tar.gz
ipm-67b9920264b636b079a65b4f78c71310018adb53.zip
:sparkles: feat(api): allow install package with version
Diffstat (limited to 'src')
-rw-r--r--src/ipm/api.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ipm/api.py b/src/ipm/api.py
index 1eefb52..9c514e0 100644
--- a/src/ipm/api.py
+++ b/src/ipm/api.py
@@ -87,6 +87,14 @@ def install(
lock = PackageLock()
if uri.isalpha():
+ # TODO 兼容 >= <= > < 等标识符
+ splited_uri = uri.split("==")
+ name = splited_uri[0]
+ if len(splited_uri) == 1:
+ version = None
+ else:
+ version = splited_uri[1]
+
yggdrasil = Yggdrasil(index)
if not (lock_index := lock.get_index(index)):
@@ -95,11 +103,11 @@ def install(
else:
yggdrasil.init(INDEX_PATH / lock_index["uuid"])
- if not (remote_ifp := yggdrasil.get(uri)): # TODO 特定版本的捕获
+ if not (remote_ifp := yggdrasil.get(name, version=version)):
return warning(f"未能在世界树[{yggdrasil.index}]中搜寻到规则包[{uri}].", echo)
ifp = loader.load_from_remote(
- uri,
+ name,
baseurl=index,
filename=remote_ifp["source"],
echo=echo,