#!/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 <