feat: 新增 jsc-wiki 外掛
讀取本 repo wiki 的「JSC 知識庫」,依領域提供 /jsc-wiki:wiki、system、network、virt、container、database、dev、ai、apps 指令。 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
5701b8b8e5
commit
7ecb846767
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
# 讀取 JSC 知識庫 wiki(唯讀)。第一次 clone 到快取,之後每次先 pull;連不上就用現有快取。
|
||||
# 用法:wiki.sh toc | chapter <N> | page <編號或關鍵字> | search <關鍵字>
|
||||
set -u
|
||||
REPO="${JSC_WIKI_URL:-https://gitea.jsc.idv.tw/jiantw83/jsc-marketplace.wiki.git}"
|
||||
DIR="${JSC_WIKI_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/jsc-wiki}"
|
||||
|
||||
sync() {
|
||||
if [ -d "$DIR/.git" ]; then
|
||||
timeout 20 git -C "$DIR" pull -q --ff-only 2>/dev/null || echo "(無法更新 wiki,使用本機快取)" >&2
|
||||
else
|
||||
mkdir -p "$(dirname "$DIR")"
|
||||
timeout 60 git clone -q --depth 1 "$REPO" "$DIR" 2>/dev/null || { echo "無法取得 wiki:$REPO" >&2; exit 1; }
|
||||
fi
|
||||
}
|
||||
|
||||
cmd="${1:-toc}"; shift || true
|
||||
sync
|
||||
cd "$DIR" || exit 1
|
||||
case "$cmd" in
|
||||
toc) cat Home.md ;;
|
||||
chapter)
|
||||
n="${1:?請給章號 1-8}"
|
||||
cat "第${n}章-"*.md | sed -E "s/\]\([^)]*\)/]/" ;;
|
||||
page)
|
||||
q="${1:?請給頁面編號(例 2.3)或標題關鍵字}"
|
||||
f=$(ls | grep -E "^${q//./\\.}-" | head -1)
|
||||
[ -n "$f" ] || f=$(ls | grep -i -- "$q" | grep -v '^第' | head -1)
|
||||
[ -n "$f" ] || { echo "找不到頁面:$q" >&2; exit 1; }
|
||||
echo "## 頁面:${f%.md}"; echo; cat "$f" ;;
|
||||
search)
|
||||
q="${1:?請給關鍵字}"
|
||||
grep -rniI --include='*.md' -- "$q" . | grep -v '^./Home.md' | cut -c3-200 | head -40 ;;
|
||||
*) echo "未知指令:$cmd" >&2; exit 2 ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user