#!/usr/bin/env bash set -euo pipefail REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BIN_DIR="${HOME}/.local/bin" PATH_MARKER="# pouch: ~/.local/bin" LEGACY_PATH_MARKER="# skiff: ~/.local/bin" mkdir -p "$BIN_DIR" ln -sf "$REPO/bin/pouch" "$BIN_DIR/pouch" echo "已安装 pouch -> $BIN_DIR/pouch" if [[ ! -e "$BIN_DIR/skiff" || -L "$BIN_DIR/skiff" ]]; then ln -sf "pouch" "$BIN_DIR/skiff" echo "已保留 skiff -> pouch(旧命令名)" fi PYTHONPATH="$REPO${PYTHONPATH:+:$PYTHONPATH}" python3 -m pouch bootstrap path_already_configured() { local file="$1" [[ -f "$file" ]] && { grep -qF "$PATH_MARKER" "$file" || grep -qF "$LEGACY_PATH_MARKER" "$file"; } } configure_bash() { local rc="${HOME}/.bashrc" if path_already_configured "$rc"; then echo "bash: $rc 已配置 PATH,跳过" return fi { echo "" echo "$PATH_MARKER" echo 'export PATH="$HOME/.local/bin:$PATH"' } >>"$rc" echo "bash: 已写入 $rc" } configure_zsh() { local rc="${HOME}/.zshrc" if path_already_configured "$rc"; then echo "zsh: $rc 已配置 PATH,跳过" return fi { echo "" echo "$PATH_MARKER" echo 'export PATH="$HOME/.local/bin:$PATH"' } >>"$rc" echo "zsh: 已写入 $rc" } configure_fish() { local fish_dir="${HOME}/.config/fish" local rc="${fish_dir}/config.fish" mkdir -p "$fish_dir" if path_already_configured "$rc"; then echo "fish: $rc 已配置 PATH,跳过" return fi { echo "" echo "$PATH_MARKER" echo 'fish_add_path -gm --prepend ~/.local/bin' } >>"$rc" echo "fish: 已写入 $rc" } configure_bash configure_zsh configure_fish echo "" echo "请重新打开终端,或执行以下命令使 PATH 生效:" echo " bash: source ~/.bashrc" echo " zsh: source ~/.zshrc" echo " fish: source ~/.config/fish/config.fish"