fix(pkg): 補齊稽核缺失並修掉護欄失效
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、 把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。 Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。 完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。 How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有 documented exit codes,並以真實執行驗證每條路徑。 Who:jsc-meta:skill-check 例行稽核(2026-08-25)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+27
-8
@@ -1,17 +1,36 @@
|
||||
#!/usr/bin/env sh
|
||||
# apply-version.sh — 改寫版本來源檔案,把套件釘選到指定版本。
|
||||
# 用法: apply-version.sh <ecosystem> <project-dir> <name> <version>
|
||||
# ecosystem: nodejs | python | dotnet
|
||||
# 對應檔案(與 list-packages.sh 相同的解析邏輯):
|
||||
# 用法:apply-version.sh <ecosystem> <project-dir> <name> <version>
|
||||
# ecosystem:nodejs | python | dotnet
|
||||
# 對應檔案(與 list-packages.sh 相同的解析邏輯):
|
||||
# nodejs → package.json(dependencies / devDependencies)
|
||||
# python → requirements.txt(優先)或 pyproject.toml 的 [project] dependencies
|
||||
# dotnet → *.csproj 的 PackageReference
|
||||
# 找不到對應檔案 exit 3;檔案中找不到該套件 exit 4
|
||||
# 結束碼(慣例見 README「工具」章的結束碼總表):
|
||||
# 0 改寫成功
|
||||
# 1 參數個數不對
|
||||
# 2 ecosystem 不認識
|
||||
# 3 找不到對應的版本來源檔案——呼叫方跳過這個套件
|
||||
# 4 檔案中找不到該套件——呼叫方跳過這個套件
|
||||
# 5 需要的指令不存在(python3)
|
||||
# 6 找不到專案目錄——呼叫方停手,不要當成跳過
|
||||
set -u
|
||||
eco="${1:?ecosystem required (nodejs|python|dotnet)}"
|
||||
DIR="${2:?project dir required}"
|
||||
name="${3:?package name required}"
|
||||
version="${4:?version required}"
|
||||
|
||||
if [ "$#" -ne 4 ]; then
|
||||
echo "用法:apply-version.sh <ecosystem> <project-dir> <name> <version>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eco="$1"
|
||||
DIR="$2"
|
||||
name="$3"
|
||||
version="$4"
|
||||
|
||||
# 先擋找不到專案目錄。少了這道,壞路徑會被報成「沒有版本來源檔案」,然後被當成跳過藏起來。
|
||||
[ -d "$DIR" ] || { echo "project dir not found: $DIR" >&2; exit 6; }
|
||||
|
||||
# 三種來源檔案都靠 python3 改寫。少了 python3 會被誤判成檔案中找不到該套件,所以先擋。
|
||||
command -v python3 >/dev/null 2>&1 || { echo "python3 not found" >&2; exit 5; }
|
||||
|
||||
case "$eco" in
|
||||
nodejs)
|
||||
|
||||
Reference in New Issue
Block a user