78 lines
1.6 KiB
Bash
78 lines
1.6 KiB
Bash
#!/bin/bash
|
|
# 共享运行场景解析:供 install.sh 和 adapter-state.sh 复用
|
|
|
|
resolve_platform_skill_root() {
|
|
case "$1" in
|
|
claude)
|
|
printf '%s\n' "$HOME/.claude/skills"
|
|
;;
|
|
codex)
|
|
if [ -d "$HOME/.codex/skills" ] || [ ! -d "$HOME/.Codex/skills" ]; then
|
|
printf '%s\n' "$HOME/.codex/skills"
|
|
else
|
|
printf '%s\n' "$HOME/.Codex/skills"
|
|
fi
|
|
;;
|
|
openclaw)
|
|
printf '%s\n' "$HOME/.openclaw/skills"
|
|
;;
|
|
hermes)
|
|
printf '%s\n' "$HOME/.hermes/skills"
|
|
;;
|
|
*)
|
|
echo "不支持的平台:$1" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
detect_layout_mode() {
|
|
local bundle_root="$1"
|
|
|
|
if [ -e "$bundle_root/.git" ]; then
|
|
printf '%s\n' "source_checkout"
|
|
return 0
|
|
fi
|
|
|
|
printf '%s\n' "installed_skill"
|
|
}
|
|
|
|
resolve_layout_mode() {
|
|
local bundle_root="$1"
|
|
local override_mode="${2:-}"
|
|
|
|
if [ -n "$override_mode" ]; then
|
|
printf '%s\n' "$override_mode"
|
|
return 0
|
|
fi
|
|
|
|
detect_layout_mode "$bundle_root"
|
|
}
|
|
|
|
resolve_optional_adapter_root() {
|
|
local bundle_root="$1"
|
|
local skill_root_override="${2:-}"
|
|
local override_mode="${3:-}"
|
|
local layout_mode
|
|
|
|
if [ -n "$skill_root_override" ]; then
|
|
printf '%s\n' "$skill_root_override"
|
|
return 0
|
|
fi
|
|
|
|
layout_mode="$(resolve_layout_mode "$bundle_root" "$override_mode")"
|
|
|
|
case "$layout_mode" in
|
|
source_checkout)
|
|
printf '%s\n' "$bundle_root/deps"
|
|
;;
|
|
installed_skill|upgrade_target)
|
|
printf '%s\n' "$(dirname "$bundle_root")"
|
|
;;
|
|
*)
|
|
echo "未知运行模式:$layout_mode" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|