4 个版本 (1 个稳定版)
使用旧的 Rust 2015
1.0.3 | 2017年11月3日 |
---|---|
1.0.2-beta | 2017年4月21日 |
1.0.1-beta | 2017年4月19日 |
1.0.0-beta | 2017年4月17日 |
#73 in #golang
43 个星标 & 5 个关注者
100KB
2K SLoC
Rubigo
Rubigo 是一个废弃的 Golang 依赖工具和包管理器,用 Golang 和 Rust 编写。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
特性
- 管理
vendor
、global
和local
包 - 使用自定义仓库克隆包
- 支持 语义版本化
- 定义包信息
- 启动新项目(二进制或库)
工作原理
Rubigo 在 Golang 项目的目录中创建了两个 JSON(清单)文件(rubigo.json
和 rubigo.lock
)。其中,rubigo.json
包含项目信息和需要安装和维护的包的信息,而 rubigo.lock
包含已经安装到 vendor
目录或全局在 GOPATH/src
中的包的信息。您可以手动编辑这两个文件或使用 Rubigo 子命令,然后将它们应用于项目的依赖项。此外,您也可以在现有项目中启动 Rubigo。
如何安装
您可以从 发布页面 下载预构建的二进制文件,或者按以下步骤手动构建:
- 安装 Rust 编程语言。
- 在 Linux 和 Mac OS 上:安装
cmake
,libcurl4-openssl-dev
,libelf-dev
,libssl-dev
和libdw-dev
。 - 在 Windows 上:安装
cmake
,Visual Studio C++
。
- 使用 Rust 的包管理器
cargo
安装应用程序:cargo install --git https://github.com/yaa110/rubigo.git
子命令
- init, start:在现有目录中初始化 Rubigo 项目,例如
rubigo init
。此子命令会在vendor
目录中查找已安装的包。 - new, create:创建一个新的 Golang 项目,例如
rubigo new my-project
或rubigo 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.lock
和vendor
目录中的包,例如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.json
和rubigo.lock
文件的模板,例如:rubigo.json和rubigo.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
目录中的全局软件包数组。
- git:从git仓库克隆的依赖项数组
贡献
请随时打开一个问题来报告错误或提出问题,或者打开一个拉取请求来调试或为Rubigo添加更多功能。
依赖关系
~20–28MB
~521K SLoC