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