All Projects → yaa110 → rubigo

yaa110 / rubigo

Licence: MIT license
[DEPRECATED] Golang vendor utility and package manager

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to rubigo

Peru
a generic package manager, for including other people's code in your projects
Stars: ✭ 913 (+1975%)
Mutual labels:  package-manager, dependency-manager
Pnpm
Fast, disk space efficient package manager -- 快速的,节省磁盘空间的包管理工具
Stars: ✭ 14,219 (+32215.91%)
Mutual labels:  package-manager, dependency-manager
Cmake Get
Get dependencies with cmake
Stars: ✭ 59 (+34.09%)
Mutual labels:  package-manager, dependency-manager
vanat
🔨 Dependency Manager for Vala 🚧 App under development!
Stars: ✭ 14 (-68.18%)
Mutual labels:  package-manager, dependency-manager
Cocoapods
The Cocoa Dependency Manager.
Stars: ✭ 13,503 (+30588.64%)
Mutual labels:  package-manager, dependency-manager
Projeny
A project and package manager for Unity
Stars: ✭ 656 (+1390.91%)
Mutual labels:  package-manager, dependency-manager
cget-recipes
Recipes for cget
Stars: ✭ 17 (-61.36%)
Mutual labels:  package-manager, dependency-manager
Athens
A Go module datastore and proxy
Stars: ✭ 3,736 (+8390.91%)
Mutual labels:  package-manager, dependency-manager
Boss
Dependency Manager for Delphi
Stars: ✭ 188 (+327.27%)
Mutual labels:  package-manager, dependency-manager
Docker
Composer in Docker
Stars: ✭ 180 (+309.09%)
Mutual labels:  package-manager, dependency-manager
Cpm.cmake
📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
Stars: ✭ 560 (+1172.73%)
Mutual labels:  package-manager, dependency-manager
Poetry
Python dependency management and packaging made easy.
Stars: ✭ 17,543 (+39770.45%)
Mutual labels:  package-manager, dependency-manager
Patch Package
Fix broken node modules instantly 🏃🏽‍♀️💨
Stars: ✭ 6,062 (+13677.27%)
Mutual labels:  package-manager, dependency-manager
Composer
Dependency Manager for PHP
Stars: ✭ 25,994 (+58977.27%)
Mutual labels:  package-manager, dependency-manager
Cget
C++ package retrieval
Stars: ✭ 370 (+740.91%)
Mutual labels:  package-manager, dependency-manager
Mint
A package manager that installs and runs executable Swift packages
Stars: ✭ 1,750 (+3877.27%)
Mutual labels:  package-manager, dependency-manager
flatn
flat node dependencies
Stars: ✭ 18 (-59.09%)
Mutual labels:  package-manager, dependency-manager
Poet
Poet helps you declare, manage and install dependencies of Python projects, ensuring you have the right stack everywhere.
Stars: ✭ 312 (+609.09%)
Mutual labels:  package-manager, dependency-manager
Sampctl
The Swiss Army Knife of SA:MP - vital tools for any server owner or library maintainer.
Stars: ✭ 149 (+238.64%)
Mutual labels:  package-manager, dependency-manager
Dep
Go dependency management tool experiment (deprecated)
Stars: ✭ 13,106 (+29686.36%)
Mutual labels:  package-manager, dependency-manager

Rubigo

Build Status Build status License Version

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.

Deprecation

Consider using Go versioned modules:

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

Features

  • Manage vendor, global and local packages
  • Use a custom repository to clone a package
  • Support semantic versioning
  • Define package information
  • Start a new project (binary or library)

How it works

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.

How to install

You can download a pre-built binary from releases page or you can build it manually as following:

  1. Install Rust programming language.
  • On Linux and Mac OS: install cmake, libcurl4-openssl-dev, libelf-dev, libssl-dev and libdw-dev.
  • On Windows: install cmake, Visual Studio C++.
  1. Use Rust's package manager cargo to install the application: cargo install --git https://github.com/yaa110/rubigo.git

Sub-commands

  • init, start: Initializes Rubigo project in an existing directory, e.g. rubigo init. This sub-command searches the vendor directory for packages which has already been installed.
  • new, create: Creates a new Golang project, e.g. rubigo new my-project or rubigo new --lib my-library. This sub-command creates a new directory with the name provided to it containing a new .go file and manifest files.
  • get, add: Adds a package to dependencies and clones it into vendor directory, e.g. rubigo get github.com/blah/blah --repo=github.com/my/custom/repo (the --repo argument is optional). This sub-command could also install packages globally to GOPATH/src directory using --global flag or create a local package using --local flag.
  • update, up: Updates one or all packages and applies the changes of rubigo.json to rubigo.lock and packages in vendor directory, e.g. rubigo update github.com/blah/blah. This sub-command could also delete the package's directory and clone it again using --clean flag. If no package name is provided, it updates all the packages.
  • remove, rm: Removes a package from manifest files and vendor directory, e.g. rubigo remove github.com/blah/blah.
  • apply, install: Applies the changes of rubigo.lock to packages in vendor directory, e.g. rubigo apply. This sub-command could also delete the package's directory and clone it again using --clean flag. 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 vendor directory, e.g. rubigo reset. It is used when you have manually changed the vendor directory 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.lock file, e.g. rubigo list. This sub-command could only list git, local or global packages (or a combination of them) using --remote, --local or --global flags, respectively.
  • info, about: Displays the information about the project from rubigo.json file, 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.

Flags

  • --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.

The manifest format

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.json contains 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 vendor directory.
    • global: An array of global packages in GOPATH/src directory.

Contribution

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].