#!/bin/bash # 将 herdr 配置链接到 dotfile SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck disable=SC1091 source "$SCRIPT_DIR/common/help.sh" usage() { cat <<'EOF' 用法: herdr-init 将 ~/.dotfile/herdr/config.toml 软链接到 herdr 配置路径: $XDG_CONFIG_HOME/herdr/config.toml(默认 ~/.config/herdr/config.toml) 已有配置会备份为 *.backup.<时间戳>。 选项: -h, --help 显示此帮助 EOF } dotfile_help_requested "${1:-}" && dotfile_show_help set -e SRC="$HOME/.dotfile/herdr/config.toml" CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" DEST_DIR="$CONFIG_HOME/herdr" DEST="$DEST_DIR/config.toml" if [ ! -f "$SRC" ]; then echo "错误: 未找到 $SRC" >&2 exit 1 fi echo "初始化 herdr 配置..." echo "目标路径: $DEST" mkdir -p "$DEST_DIR" if [ -L "$DEST" ] && [ "$(readlink -f "$DEST")" = "$(readlink -f "$SRC")" ]; then echo "软链接已存在且指向正确位置,无需操作。" exit 0 fi if [ -e "$DEST" ] || [ -L "$DEST" ]; then BACKUP="$DEST.backup.$(date +%Y%m%d%H%M%S)" mv "$DEST" "$BACKUP" echo "已将现有配置备份到 $BACKUP" fi ln -s "$SRC" "$DEST" if [ -L "$DEST" ] && [ "$(readlink -f "$DEST")" = "$(readlink -f "$SRC")" ]; then echo "软链接创建成功: $DEST -> $SRC" else echo "软链接创建失败,请检查路径和权限。" >&2 exit 1 fi if command -v herdr >/dev/null 2>&1; then echo "校验配置:" herdr config check || true if pgrep -x herdr >/dev/null 2>&1; then echo "herdr 正在运行,可在 herdr 内用 prefix+shift+r 热重载" fi else echo "未找到 herdr,跳过配置校验" fi