Gitea 交互式下载器

License: MIT

一个功能强大且用户友好的命令行工具,用于通过交互式菜单浏览和下载私有 Gitea 仓库中的文件。

功能特性

  • 🚀 一键安装: 只需一行命令即可完成下载和安装,无需手动配置。
  • 🤖 交互式操作: 通过 fzf 驱动的 TUI 菜单,轻松浏览和选择仓库及文件。
  • 📂 多文件选择: 使用 Tab 键即可选中多个文件,进行批量下载。
  • ⚙️ 智能配置: 首次运行自动引导配置 Gitea 地址和访问令牌,并安全地保存在 ~/.gitea_cli_config
  • 🛡️ sudo 感知: 无论您是普通用户还是通过 sudo 运行,脚本都能自动找到正确的配置文件。
  • 📦 依赖自检: 在 Debian/Ubuntu 系统上,能自动检测并提示安装 jqfzf 等必要依赖。
  • 🌍 全局命令: 安装后即可在系统任何路径下使用 gitea 命令。

🔧 环境依赖

  • 核心依赖: curl (安装脚本需要,主程序也需要)
  • 功能依赖: jq (用于解析 JSON), fzf (用于生成交互式菜单)
  • 支持系统: 主要为 Linux (在 Debian/Ubuntu 上支持依赖自动安装)。在 macOS 或其他 Linux 发行版上,您可能需要手动安装 jqfzf

🚀 安装

您只需要在终端中运行以下一行命令,即可完成所有安装和配置:

curl -sL https://git.zyj.best/theshy/gitea-downloader/raw/branch/main/install.sh | bash

此命令会:

  1. 下载最新的 install.sh 安装脚本。
  2. 通过管道 | 交给 bash 直接执行。
  3. 安装脚本会自动下载主程序 gitea.sh,将其重命名为 gitea 并移动到 /usr/local/bin 目录下,使其成为一个全局命令。

💡 如何使用

安装完成后,即可开始使用。

  1. 启动工具 在终端中输入以下命令:

    gitea down
    
  2. 首次配置 如果是第一次运行,脚本会提示您输入:

    • 您的 Gitea 实例 URL (例如 https://git.example.com)
    • 您的 Gitea Access Token (访问令牌)

    注意: Access Token 需要至少拥有 read:repositoryread:user 的权限。请在 Gitea 网站的 设置 -> 应用 页面生成。

  3. 交互式选择

    • 选择仓库: 脚本会列出您的所有仓库,使用 方向键导航,按 Enter 确认。
    • 选择文件: 接着会列出所选仓库中的所有文件。
      • 使用 导航。
      • 使用 Tab 键选中或取消选中一个文件(选中的会高亮)。
      • Enter 键确认选择,开始下载。

🛠️ 工作原理

本项目包含两个核心脚本:

  1. install.sh: 一键安装脚本,负责将主程序部署到系统中。
  2. gitea.sh: 主程序,负责与 Gitea API 交互、提供 TUI 菜单并执行下载任务。

所有用户配置URL 和 Token都存储在用户家目录下的 ~/.gitea_cli_config 文件中,并设置了仅当前用户可读写的权限 (600) 以确保安全。

🔄 更新

如果您想更新到最新版本的 gitea 工具,只需重新运行一遍安装命令即可。安装脚本会提示您是否覆盖现有版本。

curl -sL https://git.zyj.best/theshy/gitea-downloader/raw/branch/main/install.sh | bash

🗑️ 卸载

如果您想从系统中移除此工具,请执行以下两个步骤:

  1. 删除主程序文件:

    sudo rm /usr/local/bin/gitea
    
  2. 删除配置文件 (此操作会移除您保存的 URL 和 Token):

    rm ~/.gitea_cli_config
    

常见问题排查

  • 问题: 运行 gitea down 后提示 "无法获取仓库列表" 或 "用户不存在"

    • 原因: 这几乎总是因为 Access Token 无效或权限不足。
    • 解决方案:
      1. 请重新生成一个 Token确保至少勾选了 repositoryuser 权限。
      2. 运行 gitea down,在提示 是否使用此配置? 时输入 reset,然后输入您的新 Token。
  • 问题: 安装后运行 gitea 提示 "command not found"

    • 原因: 您的 Shell 可能还没有加载新的命令路径。
    • 解决方案:
      1. 尝试关闭当前终端,然后打开一个新的终端窗口。
      2. 如果问题依旧,请检查 /usr/local/bin 是否在您的 $PATH 环境变量中 (echo $PATH)。

📄 许可证

本项目采用 MIT 许可证。

Description
No description provided
Readme 364 KiB
Languages
Shell 100%