4 个版本 (1 个稳定版)

使用旧的 Rust 2015

1.0.3 2017年11月3日
1.0.2-beta2017年4月21日
1.0.1-beta2017年4月19日
1.0.0-beta2017年4月17日

#73 in #golang

43 个星标 & 5 个关注者

MIT 许可证

100KB
2K SLoC

Rubigo

Build Status Build status License Version

Rubigo 是一个废弃的 Golang 依赖工具和包管理器,用 GolangRust 编写。Rubigo 使用从 Go 1.5 开始的 vendor 目录来安装包,但也可以在 GOPATH/src 目录中全局添加包或在 vendor 目录中创建本地包。Rubigo 尊重对 vendor 目录的手动更改,不会删除自定义包。目前,Rubigo 只支持 git 仓库。此源代码根据 MIT 许可证授权,许可证文件可在 LICENSE 文件中找到。

废弃

考虑使用 Go 版本化模块

  • rm-r vendor rubigo.json rubigo.lock
  • export GO111MODULE=on
  • gomod init

特性

  • 管理 vendorgloballocal
  • 使用自定义仓库克隆包
  • 支持 语义版本化
  • 定义包信息
  • 启动新项目(二进制或库)

工作原理

Rubigo 在 Golang 项目的目录中创建了两个 JSON(清单)文件(rubigo.jsonrubigo.lock)。其中,rubigo.json 包含项目信息和需要安装和维护的包的信息,而 rubigo.lock 包含已经安装到 vendor 目录或全局在 GOPATH/src 中的包的信息。您可以手动编辑这两个文件或使用 Rubigo 子命令,然后将它们应用于项目的依赖项。此外,您也可以在现有项目中启动 Rubigo。

如何安装

您可以从 发布页面 下载预构建的二进制文件,或者按以下步骤手动构建:

  1. 安装 Rust 编程语言。
  • 在 Linux 和 Mac OS 上:安装 cmakelibcurl4-openssl-devlibelf-devlibssl-devlibdw-dev
  • 在 Windows 上:安装 cmakeVisual Studio C++
  1. 使用 Rust 的包管理器 cargo 安装应用程序:cargo install --git https://github.com/yaa110/rubigo.git

子命令

  • init, start:在现有目录中初始化 Rubigo 项目,例如 rubigo init。此子命令会在 vendor 目录中查找已安装的包。
  • new, create:创建一个新的 Golang 项目,例如 rubigo new my-projectrubigo new --lib my-library。此子命令会创建一个新目录,目录名为提供的名称,并包含一个新 .go 文件和清单文件。
  • get, add:将包添加到依赖项并将它克隆到 vendor 目录中,例如 rubigo get github.com/blah/blah --repo=github.com/my/custom/repo--repo 参数是可选的)。此子命令也可以使用 --global 标志将包全局安装到 GOPATH/src 目录,或使用 --local 标志创建本地包。
  • update, up:更新一个或所有包,并将 rubigo.json 的更改应用到 rubigo.lockvendor 目录中的包,例如 rubigo update github.com/blah/blah。此子命令还可以使用 --clean 标志删除包的目录并重新克隆。如果没有提供包名称,则更新所有包。
  • remove, rm:从清单文件和 vendor 目录中删除包,例如 rubigo remove github.com/blah/blah
  • apply, install:将 rubigo.lock 的更改应用到 vendor 目录中的包,例如 rubigo apply。此子命令也可以使用 --clean 标志删除包的目录并重新克隆。通常在您克隆了一个项目并想要安装缺失的包时使用此命令。
  • 重置,同步:将vendor目录中已安装的软件包列表更新到清单文件中,例如:rubigo reset。当您手动更改了vendor目录并希望更新清单文件时,将使用此命令。请注意,此子命令仅收集git软件包,并忽略本地软件包。
  • 列表,ls:显示来自rubigo.lock文件的软件包列表,例如:rubigo list。此子命令只能使用--remote--local--global标志分别列出git、本地或全局软件包(或它们的组合)。
  • 信息,关于:显示来自rubigo.json文件的项目信息,例如:rubigo info
  • 帮助:显示帮助信息,例如:rubigo help。也可以获取子命令的信息,例如:rubigo help get

标志

  • --verbose, -v:使用详细输出。
  • --quiet, -q:不输出任何内容。
  • --yes, -y:在无需确认的情况下继续执行。
  • --help, -h:显示帮助信息。
  • --version, -V:显示Rubigo的版本。

清单格式

您可以在templates目录中找到rubigo.jsonrubigo.lock文件的模板,例如:rubigo.jsonrubigo.lock。这两个文件都具有JSON格式,包含以下对象

  • info:包含(可选)关于项目的信息。只有rubigo.json包含此对象。
    • name:项目的名称
    • import:项目的导入路径
    • description:关于项目的简短描述
    • homepage:项目主页的URL(应包含协议方案,例如http://
    • license:项目的许可协议
    • authors:项目作者数组
      • name:作者名称
      • email:作者的电子邮件地址
      • website:作者的网站URL(应包含协议方案,例如http://
  • packages:包含软件包的信息。
    • git:从git仓库克隆的依赖项数组
      • import:软件包的导入路径
      • repo:克隆仓库的自定义URL
      • version:项目的版本(git修订版本或语义版本)。有关语义规则的更多信息,请参阅semver文档。
    • local:在vendor目录中的本地软件包数组。
    • global:在GOPATH/src目录中的全局软件包数组。

贡献

请随时打开一个问题来报告错误或提出问题,或者打开一个拉取请求来调试或为Rubigo添加更多功能。

依赖关系

~20–28MB
~521K SLoC