refactor: 改进代码健壮性与文档一致性

This commit is contained in:
2026-04-03 15:07:26 +08:00
parent ffb200fd43
commit c87f440017
3 changed files with 13 additions and 9 deletions
+3 -4
View File
@@ -78,10 +78,9 @@ files → pacman → aur → systemd
### Pythonsource.py 及模块) ### Pythonsource.py 及模块)
**source.py 结构** **source.py 结构**
- `# ── Section ──` 分隔逻辑分区 - 纯模块注册,不直接声明文件或包
- 包集合用 `|=` 语法,元素按字母排序 - 校验 `SUDO_USER` 和必要插件存在性
- `SUDO_USER` 必须存在,不设 fallback——没有则抛 `SourceError` - 通过 `decman.modules += [...]` 注册所有模块
- 文件默认权限 `0o644`,仅需特殊权限时显式指定(如 sudoers `0o440`
**模块模式**(适用于需要 hook 或跨步骤声明的场景): **模块模式**(适用于需要 hook 或跨步骤声明的场景):
```python ```python
+8 -2
View File
@@ -1,3 +1,5 @@
import shlex
import decman import decman
from decman import File, Module from decman import File, Module
from decman.plugins.pacman import packages as pacman_packages from decman.plugins.pacman import packages as pacman_packages
@@ -46,11 +48,15 @@ class DevModule(Module):
def after_update(self, store): def after_update(self, store):
for pkg in BUN_GLOBAL_PACKAGES: for pkg in BUN_GLOBAL_PACKAGES:
try: try:
decman.prg(["su", "-", self.user, "-c", f"bun add -g {pkg}"]) decman.prg(
["su", "-", self.user, "-c", shlex.join(["bun", "add", "-g", pkg])]
)
except Exception: except Exception:
print(f"警告:安装 {pkg} 失败,跳过") print(f"警告:安装 {pkg} 失败,跳过")
for pkg in GO_INSTALL_PACKAGES: for pkg in GO_INSTALL_PACKAGES:
try: try:
decman.prg(["su", "-", self.user, "-c", f"go install {pkg}"]) decman.prg(
["su", "-", self.user, "-c", shlex.join(["go", "install", pkg])]
)
except Exception: except Exception:
print(f"警告:安装 {pkg} 失败,跳过") print(f"警告:安装 {pkg} 失败,跳过")
+2 -3
View File
@@ -8,9 +8,8 @@ import modules.docker
import modules.locale import modules.locale
import modules.zsh import modules.zsh
assert decman.pacman is not None if decman.pacman is None or decman.aur is None or decman.systemd is None:
assert decman.aur is not None raise decman.SourceError("缺少必要插件,请检查 decman 安装")
assert decman.systemd is not None
USERNAME = os.environ.get("SUDO_USER") USERNAME = os.environ.get("SUDO_USER")
if not USERNAME: if not USERNAME: