refactor: 改进代码健壮性与文档一致性
This commit is contained in:
@@ -78,10 +78,9 @@ files → pacman → aur → systemd
|
|||||||
### Python(source.py 及模块)
|
### Python(source.py 及模块)
|
||||||
|
|
||||||
**source.py 结构**:
|
**source.py 结构**:
|
||||||
- 用 `# ── Section ──` 分隔逻辑分区
|
- 纯模块注册,不直接声明文件或包
|
||||||
- 包集合用 `|=` 语法,元素按字母排序
|
- 校验 `SUDO_USER` 和必要插件存在性
|
||||||
- `SUDO_USER` 必须存在,不设 fallback——没有则抛 `SourceError`
|
- 通过 `decman.modules += [...]` 注册所有模块
|
||||||
- 文件默认权限 `0o644`,仅需特殊权限时显式指定(如 sudoers `0o440`)
|
|
||||||
|
|
||||||
**模块模式**(适用于需要 hook 或跨步骤声明的场景):
|
**模块模式**(适用于需要 hook 或跨步骤声明的场景):
|
||||||
```python
|
```python
|
||||||
|
|||||||
+8
-2
@@ -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} 失败,跳过")
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user