102 lines
3.3 KiB
Bash
102 lines
3.3 KiB
Bash
#!/bin/bash
|
||
#
|
||
# install.sh - Gitea 交互式下载器一键安装脚本
|
||
#
|
||
# 这个脚本会自动下载、安装并配置 gitea.sh,使其成为一个系统级的命令 'gitea'。
|
||
|
||
# --- 配置 ---
|
||
DOWNLOAD_URL="https://git.zyj.best/theshy/gitea-downloader/raw/branch/main/gitea.sh"
|
||
INSTALL_DIR="/usr/local/bin"
|
||
INSTALL_NAME="gitea"
|
||
TARGET_PATH="${INSTALL_DIR}/${INSTALL_NAME}"
|
||
|
||
# --- 辅助函数 ---
|
||
_print() {
|
||
local color_code="$1"; shift
|
||
if [ -t 1 ]; then printf "\e[${color_code}m%s\e[0m\n" "$@"; else printf "%s\n" "$@"; fi
|
||
}
|
||
info() { _print "34" "$@"; }
|
||
success() { _print "32" "$@"; }
|
||
error() { >&2 _print "31" "$@"; }
|
||
warning() { _print "33" "$@"; }
|
||
|
||
# --- 主逻辑 ---
|
||
|
||
main() {
|
||
# 1. 权限检查
|
||
local SUDO_CMD=""
|
||
if [[ $EUID -ne 0 ]]; then
|
||
if ! command -v sudo &> /dev/null; then
|
||
error "错误: 本脚本需要 root 权限来安装文件到 ${INSTALL_DIR}。"
|
||
error "请以 root 用户身份运行,或安装 'sudo' 后重试。"
|
||
exit 1
|
||
fi
|
||
SUDO_CMD="sudo"
|
||
fi
|
||
info "权限检查通过。将使用 '${SUDO_CMD}' 来执行需要提升权限的命令。"
|
||
|
||
# 2. 依赖检查
|
||
if ! command -v curl &> /dev/null; then
|
||
error "错误: 核心依赖 'curl' 未找到。请先安装 curl 后再运行此脚本。"
|
||
warning " - Debian/Ubuntu: sudo apt-get install curl"
|
||
exit 1
|
||
fi
|
||
|
||
# 3. 检查是否已安装
|
||
if [ -f "$TARGET_PATH" ]; then
|
||
warning "检测到 '${TARGET_PATH}' 已存在。"
|
||
read -r -p "是否要覆盖它? [y/N] " choice
|
||
case "$choice" in
|
||
y|Y )
|
||
info "好的,将覆盖现有版本。"
|
||
;;
|
||
* )
|
||
error "操作取消。"
|
||
exit 1
|
||
;;
|
||
esac
|
||
fi
|
||
|
||
# 4. 下载主脚本到临时文件
|
||
info "\n步骤 1/3: 正在从您的 Gitea 仓库下载主脚本..."
|
||
local TEMP_FILE
|
||
TEMP_FILE=$(mktemp)
|
||
|
||
curl -L --fail -o "$TEMP_FILE" "$DOWNLOAD_URL" || {
|
||
error "\n下载失败!"
|
||
error "请检查 URL 是否正确,以及网络连接是否正常。"
|
||
error "URL: ${DOWNLOAD_URL}"
|
||
rm -f "$TEMP_FILE"
|
||
exit 1
|
||
}
|
||
success "主脚本下载成功!"
|
||
|
||
# 5. 安装脚本
|
||
info "\n步骤 2/3: 正在安装脚本到 ${TARGET_PATH}..."
|
||
|
||
# 赋予执行权限
|
||
chmod +x "$TEMP_FILE"
|
||
|
||
# 移动到系统路径
|
||
$SUDO_CMD mv "$TEMP_FILE" "$TARGET_PATH" || {
|
||
error "\n无法将脚本移动到 ${TARGET_PATH}。"
|
||
error "请检查您是否有足够的权限。"
|
||
rm -f "$TEMP_FILE"
|
||
exit 1
|
||
}
|
||
success "脚本安装成功!"
|
||
|
||
# 6. 最终提示
|
||
info "\n步骤 3/3: 完成!"
|
||
success "\n祝贺您!Gitea 交互式下载器已成功安装。"
|
||
info "您现在可以在系统的任何位置使用 'gitea' 命令了。"
|
||
warning "\n下一步操作:"
|
||
warning " 1. 打开一个新的终端,或者运行 'source ~/.bashrc' (取决于您的 shell)。"
|
||
warning " 2. 运行以下命令开始使用:"
|
||
info " gitea down"
|
||
warning " 3. 首次运行时,它会引导您完成 Gitea URL 和 Token 的配置。"
|
||
warning " (它还会自动检查并提示安装 jq 和 fzf 等依赖)"
|
||
}
|
||
|
||
# --- 脚本入口 ---
|
||
main |