/bukin

Plugin and server installer for Minecraft

Primary LanguageRubyGNU General Public License v3.0GPL-3.0

Bukin

Plugin and server installer for Minecraft similar to Bundler.

Build Status Dependency Status Code Climate Coverage Status

Installation

Bukin requires Ruby 1.9 or greater.

apt-get install ruby
gem install bukin

Usage

Bukin works by reading a list of dependencies from a Bukfile. The most basic usage would be:

bukin init
bukin install

Running bukin init will create a file named Bukfile that lists 'craftbukkit' as the server to be installed. Running bukin install will then download and install Bukkit. You can make changes to what will be installed by editing the Bukfile. Specify a server using the server keyword and a plugin using the plugin keyword.

server 'craftbukkit'
plugin 'worldedit'
plugin 'worldguard'

You can specify specific versions of a plugin or server to install. Craftbukkit uses its own special version naming (artifact slugs).

server 'craftbukkit', 'build-2754'
plugin 'worldedit', '5.5.5'
plugin 'worldguard', '5.7.3'

You can also specify groups that resources should be placed in. This allows you to only install specific plugins depending on your environment or server setup.

# Will not be installed if the group 'test' is excluded
plugin 'worldedit', group: :test

group :test do
  plugin 'worldguard'
  plugin 'worldedit'
end

# Will not be installed if both the groups 'test' and 'development' are excluded
plugin 'worldedit', group: [:test, :development]

group :test, :development do
  plugin 'worldguard'
  plugin 'worldedit'
end

# Will be installed regardless of what groups are specified
plugin 'worldguard'

When installing, resources that exist only in excluded groups will not be installed.

bukin install --without development test

By default, bukin will try to download jar files from bukkit dev. If only zip files are available, it will automatically extract all jar files from it. If you want to specify what files are extracted from a zip file, use the extract option. It takes a string or ruby regular expression used to match file names in the zip file.

plugin 'permissionsex', '1.19.5', extract: /PermissionsEx.*\.jar/

Plugins or servers can also be downloaded from Jenkins. Just specify the base url for Jenkins and a ruby regular expression matching the file you want to download. If no file is specified, bukin will download the first one listed.

server 'spigot', 'build-844', jenkins: 'http://ci.md-5.net', file: /spigot\.jar/

Need something custom? Use the download option. Version is optional but will display when the plugin is downloading.

plugin 'mycustomplugin', '2.4', download: 'http://example.com/My-Custom-Plugin.jar'

When installing, the entire Bukfile is evaluated as ruby code. This means that you can do just about anything with it. For instance, if you wanted to conditionally install spigot if the file spigot.yml exists, you could do

if File.exist? 'spigot.yml'
  server 'spigot', jenkins: 'http://ci.md-5.net'
else
  server 'craftbukkit'
end

Just make sure that you read and trust any Bukfile you download before running bukin install.

Features

Bukin is still a work in progress and is far from feature complete. Currently it supports:

  • Resource installation from
  • Versioning
    • Specific versions
    • Categories (ex: latest test build)
    • Auto selection if none specified
  • Automatic or user specified filtering of downloaded files
  • Automatic or user specified extraction of zip files
  • Automatic detection of already installed plugins
  • Installation groups

Eventually, I'd like to add some of the following:

  • A lockfile that tracks exactly what versions are installed
  • Dependency tracking and resolution
  • More complex version selectors
  • Modpack support
  • Resource installation from git
  • Top level 'source' directives
  • More commands for viewing information and updating plugins

If you have features you'd like to see, pull request are welcome.