Rubigo is a DEPRECATED dependency tool and package manager for Golang, written in Rust. Rubigo uses vendor directory (starting from Go 1.5) to install packages, however it is possible to add packages globally (in GOPATH/src directory) or make a local package in vendor directory. Rubigo respects to manual changes in vendor directory and does not delete custom packages. Currently, Rubigo only supports git repositories. This source code is licensed under MIT license that can be found in the LICENSE file.
Consider using Go versioned modules:
rm -r vendor rubigo.json rubigo.lockexport GO111MODULE=ongo mod init
- Manage
vendor,globalandlocalpackages - Use a custom repository to clone a package
- Support semantic versioning
- Define package information
- Start a new project (binary or library)
Rubigo creates two JSON (manifest) files (rubigo.json and rubigo.lock) inside the directory of Golang project. The rubigo.json contains the information of the project and packages which should be installed and maintained, and rubigo.lock contains the information of packages which have already been installed in vendor directory or globally in GOPATH/src. You could edit both files manually or using Rubigo sub-commands, then you can apply them to project's dependencies. Also, it is feasible to start Rubigo in an existing project.
You can download a pre-built binary from releases page or you can build it manually as following:
- Install Rust programming language.
- On Linux and Mac OS: install
cmake,libcurl4-openssl-dev,libelf-dev,libssl-devandlibdw-dev. - On Windows: install
cmake,Visual Studio C++.
- Use Rust's package manager
cargoto install the application:cargo install --git https://github.com/yaa110/rubigo.git
- init, start: Initializes Rubigo project in an existing directory, e.g.
rubigo init. This sub-command searches thevendordirectory for packages which has already been installed. - new, create: Creates a new Golang project, e.g.
rubigo new my-projectorrubigo new --lib my-library. This sub-command creates a new directory with the name provided to it containing a new.gofile and manifest files. - get, add: Adds a package to dependencies and clones it into
vendordirectory, e.g.rubigo get github.com/blah/blah --repo=github.com/my/custom/repo(the--repoargument is optional). This sub-command could also install packages globally toGOPATH/srcdirectory using--globalflag or create a local package using--localflag. - update, up: Updates one or all packages and applies the changes of
rubigo.jsontorubigo.lockand packages invendordirectory, e.g.rubigo update github.com/blah/blah. This sub-command could also delete the package's directory and clone it again using--cleanflag. If no package name is provided, it updates all the packages. - remove, rm: Removes a package from manifest files and
vendordirectory, e.g.rubigo remove github.com/blah/blah. - apply, install: Applies the changes of
rubigo.lockto packages invendordirectory, e.g.rubigo apply. This sub-command could also delete the package's directory and clone it again using--cleanflag. Most of the time, it is used when you have cloned a project and wanted to install missing packages. - reset, sync: Updates manifest files to the list of packages which have already been installed in
vendordirectory, e.g.rubigo reset. It is used when you have manually changed thevendordirectory and wanted to update manifest files. Please note that this subcommand only collects git packages and ignores local packages. - list, ls: Displays a list of packages from
rubigo.lockfile, e.g.rubigo list. This sub-command could only list git, local or global packages (or a combination of them) using--remote,--localor--globalflags, respectively. - info, about: Displays the information about the project from
rubigo.jsonfile, e.g.rubigo info. - help: Displays the help message, e.g.
rubigo help. It is also possible to get the information of a sub-command, e.g.rubigo help get.
- --verbose, -v: Uses verbose output.
- --quiet, -q: Prints no output.
- --yes, -y: Continues without prompt for a confirmation.
- --help, -h: Displays the help message.
- --version, -V: Displays the version of Rubigo.
You can find the template of rubigo.json and rubigo.lock files in templates directory. Both files have a JSON format with the following objects:
- info: Contains the (optional) information about the project. Only
rubigo.jsoncontains this object.- name: The name of project
- import: The import path of project
- description: Short description about the project
- homepage: Url to the project homepage (should contain the protocol scheme, such as
http://) - license: The license of the project
- authors: An array of project's authors
- name: The name of author
- email: The email address of author
- website: The website url of author (should contain the protocol scheme, such as
http://)
- packages: Containg the information about packages.
- git: An array of dependencies cloned from a git repository
- import: The import path of package
- repo: A custom url to clone the repository
- version: The version (a git revision or semantic version) of the project. For more information about the semantic rules, please check semver documentation.
- local: An array of local packages in
vendordirectory. - global: An array of global packages in
GOPATH/srcdirectory.
- git: An array of dependencies cloned from a git repository
Please feel free to open an issue to report a bug or ask a question, or open a pull request to debug or add more features to Rubigo.