detect-clis.sh 與 list-models.sh 一律回零:找不到執行檔,或讀不到設定檔, 都只是少掉那一列,不算失敗。這個約定過去只存在讀過腳本的人腦袋裡。 呼叫端很容易拿結束碼去判斷「這台機器有沒有裝 CLI」,然後永遠判斷錯。 現在把它寫在檔頭,兩支腳本的行為都不動。 README 的腳本表與技能說明同步更新,讀 README 的人看到的流程,才跟技能 裡實際寫的一致。
20 lines
886 B
Bash
Executable File
20 lines
886 B
Bash
Executable File
#!/usr/bin/env sh
|
||
# detect-clis.sh — 找出已安裝的 AI CLI 工具與執行檔路徑。
|
||
# 輸出(TSV): name<TAB>path<TAB>version(未安裝的不輸出)
|
||
# 支援: claude / codex / copilot / antigravity(agy) / kiro
|
||
# 結束碼: 0=一律回 0。probe 找不到執行檔就跳過那一列,不算失敗,所以沒有其他碼。
|
||
# 一台機器一個 CLI 都沒裝也是 0,只是不輸出任何一列。呼叫端要看輸出有幾列,
|
||
# 不要拿結束碼判斷有沒有裝到 CLI。
|
||
set -u
|
||
probe() { # $1=顯示名 $2=執行檔名 $3=版本參數
|
||
p=$(command -v "$2" 2>/dev/null) || return 0
|
||
v=$("$p" "$3" 2>/dev/null | head -n1 | tr -d '\r') || v=""
|
||
printf '%s\t%s\t%s\n' "$1" "$p" "$v"
|
||
}
|
||
probe claude claude --version
|
||
probe codex codex --version
|
||
probe copilot copilot --version
|
||
probe antigravity agy --version
|
||
probe kiro kiro-cli --version
|
||
exit 0
|