fujian_water_biz_doc/scripts/check-marksman.sh

147 lines
3.2 KiB
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
set -eu
PROJECT_ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
info() {
printf '%s\n' "[INFO] $*"
}
warn() {
printf '%s\n' "[WARN] $*" >&2
}
error() {
printf '%s\n' "[ERROR] $*" >&2
}
section() {
printf '\n%s\n' "== $* =="
}
has_cmd() {
command -v "$1" >/dev/null 2>&1
}
print_install_help() {
cat <<'EOF'
未检测到 marksman。
建议安装方式:
macOS(Homebrew):
brew install marksman
Rust(Cargo):
cargo install marksman
安装完成后可执行:
marksman --help
如果 macOS 提示二进制文件无法打开,可尝试:
xattr -d com.apple.quarantine "$(command -v marksman)"
EOF
}
check_binary() {
section "检查 marksman 可执行文件"
if ! has_cmd marksman; then
error "当前环境未找到 marksman"
print_install_help
return 1
fi
MARKSMAN_BIN="$(command -v marksman)"
info "已找到 marksman: $MARKSMAN_BIN"
if marksman --help >/dev/null 2>&1; then
info "marksman 可正常执行"
else
warn "marksman 已存在,但执行 --help 失败"
return 1
fi
if marksman --version >/dev/null 2>&1; then
VERSION="$(marksman --version 2>/dev/null | head -n 1 || true)"
[ -n "${VERSION:-}" ] && info "版本信息: $VERSION"
else
warn "marksman 不支持 --version 或版本信息获取失败"
fi
return 0
}
check_project_config() {
section "检查项目配置"
if [ -f "$PROJECT_ROOT/.marksman.toml" ]; then
info "已检测到工作区配置: $PROJECT_ROOT/.marksman.toml"
else
warn "未检测到 .marksman.toml跨文档引用/工作区能力可能不稳定"
fi
if [ -f "$PROJECT_ROOT/.zed/settings.json" ]; then
info "已检测到 Zed 项目设置: $PROJECT_ROOT/.zed/settings.json"
if grep -q '"Markdown"' "$PROJECT_ROOT/.zed/settings.json" 2>/dev/null \
&& grep -q '"marksman"' "$PROJECT_ROOT/.zed/settings.json" 2>/dev/null; then
info "Zed 已配置 Markdown 使用 marksman"
else
warn "Zed 设置文件存在,但未明显检测到 Markdown + marksman 配置"
fi
else
warn "未检测到 Zed 项目设置文件: .zed/settings.json"
fi
if [ -f "$PROJECT_ROOT/.claude/settings.json" ]; then
info "已检测到 Claude Code 项目设置: $PROJECT_ROOT/.claude/settings.json"
if grep -q 'marksman' "$PROJECT_ROOT/.claude/settings.json" 2>/dev/null; then
info "Claude Code 设置中已包含 marksman 相关权限或调用配置"
else
warn "Claude Code 设置文件存在,但未明显检测到 marksman 相关配置"
fi
else
warn "未检测到 Claude Code 项目设置文件: .claude/settings.json"
fi
}
print_usage_help() {
cat <<EOF
建议使用方式:
1. 在编辑器中使用
- Zed 中为 Markdown 启用 marksman 后,可获得跳转、补全、引用检查等能力
2. 在命令行中验证
- 查看帮助:
marksman --help
- 作为 LSP 服务运行:
marksman server
3. 工作区建议
- 保持仓库根目录存在 .marksman.toml
- Markdown 文档尽量使用稳定的相对链接与标题锚点
项目根目录:
$PROJECT_ROOT
EOF
}
main() {
section "Marksman 环境检查"
info "项目根目录: $PROJECT_ROOT"
check_binary
check_project_config
print_usage_help
printf '\n%s\n' "检查完成。"
}
main "$@"