/bindler

[DEPRECATED] Dead easy Vagrant plugins management

Primary LanguageRubyMIT LicenseMIT

Bindler

Dead easy Vagrant plugins management, think of it as "Bundler for Vagrant".

NOTICE: This plugin is no longer being maintained, if you are interested on picking up the gem name or wants to continue the work on it please let @fgrehm know.

WARNING

This is highly experimental and things might go wrong. It basically does some heavy monkey patching on Vagrant's core and should not be considered "production-ready". Please keep that in mind and be ready to revert Bindler's installation in case things go crazy.

Installation

The plugin works with Vagrant 1.2 and 1.3 only and will error out if you are using a newer version.

To get the latest version of Bindler simply run the following:

vagrant plugin install bindler
vagrant bindler setup

To install a pre-release or legacy version of the plugin look through the Bindler releases page on GitHub, download the bindler-VERSION.gem, and run the following:

# Set $VERSION to the version you want to install
VERSION='0.1.4' 

# Assuming you dowloaded the gem to ~/Downloads
vagrant plugin install ~/Downloads/bindler-$VERSION.gem

Changelog

The Bindler releases page on GitHub gives you a great overview of all the changes that get into every release of Bindler. You can also view the commit history

Usage

Add a plugin manifest file under one of these filenames. Currently the accepted formats are JSON and YAML. The recommended filenames are plugins.json or plugins.yml. You can even add your own plugin manifest name using the $VAGRANT_PLUGINS_FILENAME variable. The JSON/YAML format plugins as their names (strings) or their name and version (key-value pair):

Example JSON:

[
  "vagrant-lxc",
  {
    "vagrant-cachier": "0.2.0"
  }
]

Example YAML:

- vagrant-lxc
- vagrant-cachier: 0.2.0

In a project with a plugins file you can simply run vagrant plugin bundle to install any missing dependencies:

$ vagrant plugin bundle

Installing plugins...
  -> vagrant-lxc already installed
  -> vagrant-cachier (0.2.0)

List installed plugins with vagrant plugin list:

$ vagrant plugin list

vagrant-lxc (0.4.0)
bindler (0.1.1)

Project dependencies:
  -> vagrant-lxc
  -> vagrant-cachier 0.2.0

Help! Things are falling apart!

First bring back Vagrant's default plugins.json file:

mv $HOME/.vagrant.d/{global-,}plugins.json

And then remove the require 'bindler' from your $HOME/.vagrant.d/Vagrantfile.

How does it work?

Have a look at this blog post.

Contributing

# Clone the project from origin
git clone https://github.com/fgrhem/bindler

# Fork the project on GitHub and add it as a remote in your local repository
git remote add fork https://github.com/USERNAME/bindler

cd bindler/
bundle install

git checkout -b feature/your-awesome-feature # or fix/your-awesome-bug-fix

# Add and test out your changes
rake build
vagrant plugin install pkg/bindler-VERSION.gem

# Push your changes to the forked branch
git push fork feature/your-awesome-feature # or fix/your-awesome-bug-fix

# Create a pull request on GitHub

Bitdeli Badge