Files
cli/tools/detect-clis.sh
T
jiantw83 8112905364 docs(cli): 把結束碼約定寫進腳本檔頭,README 跟著對齊
detect-clis.sh 與 list-models.sh 一律回零:找不到執行檔,或讀不到設定檔,
都只是少掉那一列,不算失敗。這個約定過去只存在讀過腳本的人腦袋裡。
呼叫端很容易拿結束碼去判斷「這台機器有沒有裝 CLI」,然後永遠判斷錯。
現在把它寫在檔頭,兩支腳本的行為都不動。

README 的腳本表與技能說明同步更新,讀 README 的人看到的流程,才跟技能
裡實際寫的一致。
2026-08-31 11:09:59 +08:00

20 lines
886 B
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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