aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-28 19:31:45 +0800
committer苏向夜 <fu050409@163.com>2024-03-28 19:31:45 +0800
commit81b380b04b9e713223106f16951320ef4aa03373 (patch)
treeacd405dbd836442802dd75c635a3a7357fb4e689 /src
parent57bfd47bf8fc6604428b3fbfb0a8523f0e926d67 (diff)
downloadipm-81b380b04b9e713223106f16951320ef4aa03373.tar.gz
ipm-81b380b04b9e713223106f16951320ef4aa03373.zip
feat(index): add yggdrasil sync
Diffstat (limited to 'src')
-rw-r--r--src/ipm/api.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/ipm/api.py b/src/ipm/api.py
index 77e8d94..8c3045a 100644
--- a/src/ipm/api.py
+++ b/src/ipm/api.py
@@ -2,7 +2,7 @@ from datetime import datetime
from pathlib import Path
from typing import Optional
-from ipm.models.lock import ProjectLock
+from ipm.models.lock import PackageLock, ProjectLock
from ipm.project.env import new_virtualenv
from ipm.project.toml_file import (
add_yggdrasil,
@@ -36,7 +36,7 @@ import json
def lock(target_path: StrPath, echo: bool = False) -> bool:
- info("项目环境检查...", echo)
+ info("生成项目锁...", echo)
update("检查环境中...")
if not (toml_path := Path(target_path).joinpath("infini.toml")).exists():
@@ -54,11 +54,28 @@ def lock(target_path: StrPath, echo: bool = False) -> bool:
def check(target_path: StrPath, echo: bool = False) -> bool:
+ info("检查项目环境...", echo)
+ update("检查基础环境中...")
+ if not (toml_path := Path(target_path).joinpath("infini.toml")).exists():
+ raise FileNotFoundError(
+ f"文件 [green]infini.toml[/green] 尚未被初始化, 你可以使用[bold green]`ipm init`[/bold green]来初始化项目."
+ )
+ project = InfiniProject(toml_path.parent)
+ success("环境检查完毕.", echo)
+
+ update("同步世界树中...", echo)
+ global_lock = PackageLock()
+ for index in project.yggdrasils.values():
+ update(f"同步世界树: {index}...")
+ if not (yggdrasil := global_lock.get_yggdrasil_by_index(index)):
+ Yggdrasil.init(index)
+ else:
+ yggdrasil.sync()
+ success("世界树同步完毕.", echo)
+
if not lock(target_path, echo=echo):
return False
- update("处理环境配置中...", echo)
- warning("同步指令暂未被实装, 忽略.", echo)
return True
@@ -243,10 +260,7 @@ def yggdrasil_add(
)
success("环境检查完毕.", echo)
update("同步世界树中...", echo)
- yggdrasil = Yggdrasil(index)
- yggdrasil.sync()
- warning("世界树同步模块未实装, 忽略.", echo)
-
+ Yggdrasil.init(index)
add_yggdrasil(toml_path, name, index)
success("更改均已写入文件.", echo)
return True