2ede67d1c9
Clone https://git.yumee.top/laily/.pouch to ~/.pouch and run install.sh.
77 lines
1.9 KiB
Bash
Executable File
77 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# 从 git.yumee.top 克隆并安装 pouch 到 ~/.pouch
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
# shellcheck disable=SC1091
|
||
source "$SCRIPT_DIR/common/help.sh"
|
||
|
||
usage() {
|
||
cat <<'EOF'
|
||
用法: pouch-install
|
||
|
||
从 https://git.yumee.top/laily/.pouch 克隆到 ~/.pouch,
|
||
并运行仓库内 install.sh 安装 CLI。
|
||
|
||
~/.pouch 已是 pouch 仓库时跳过克隆,直接跑 install.sh。
|
||
路径已占用且不是 pouch 仓库时拒绝覆盖。
|
||
|
||
选项:
|
||
-h, --help 显示此帮助
|
||
EOF
|
||
}
|
||
|
||
dotfile_help_requested "${1:-}" && dotfile_show_help
|
||
|
||
set -euo pipefail
|
||
|
||
POUCH_DIR="${HOME}/.pouch"
|
||
POUCH_URL="https://git.yumee.top/laily/.pouch"
|
||
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m'
|
||
|
||
need_cmd() {
|
||
if ! command -v "$1" >/dev/null 2>&1; then
|
||
echo -e "${RED}缺少命令: $1${NC}" >&2
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
is_pouch_repo() {
|
||
[ -d "$POUCH_DIR/skills" ] && [ -f "$POUCH_DIR/install.sh" ]
|
||
}
|
||
|
||
need_cmd git
|
||
need_cmd python3
|
||
|
||
if [ -e "$POUCH_DIR" ] || [ -L "$POUCH_DIR" ]; then
|
||
if is_pouch_repo; then
|
||
echo -e "${GREEN}${POUCH_DIR} 已存在,跳过克隆${NC}"
|
||
else
|
||
echo -e "${RED}${POUCH_DIR} 已存在且不是 pouch 仓库,拒绝覆盖${NC}" >&2
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}正在克隆 ${POUCH_URL} 到 ${POUCH_DIR}...${NC}"
|
||
git clone "$POUCH_URL" "$POUCH_DIR"
|
||
echo -e "${GREEN}已克隆到 ${POUCH_DIR}${NC}"
|
||
fi
|
||
|
||
if ! is_pouch_repo; then
|
||
echo -e "${RED}${POUCH_DIR} 缺少 skills/ 或 install.sh,仓库可能不完整${NC}" >&2
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${YELLOW}正在运行 ${POUCH_DIR}/install.sh...${NC}"
|
||
bash "$POUCH_DIR/install.sh"
|
||
export PATH="${HOME}/.local/bin:${PATH}"
|
||
|
||
if command -v pouch >/dev/null 2>&1; then
|
||
echo -e "${GREEN}pouch 安装成功: $(command -v pouch)${NC}"
|
||
else
|
||
echo -e "${YELLOW}pouch 已写入 ~/.local/bin,当前会话请执行:${NC}"
|
||
echo ' export PATH="$HOME/.local/bin:$PATH"'
|
||
fi
|