Maestro::Plugin::Rake::Tasks

This gem is used to help with the packaging of Maestro Ruby plugins. It provides tasks that can be instantiated and used as part of a Rakefile.

Installation

Add this line to your application's Gemfile:

gem 'maestro-plugin-rake-tasks'

And then execute:

$ bundle

Or install it yourself as:

$ gem install maestro-plugin-rake-tasks

Usage

Bundle Task

This task is used to update the gem dependencies in the vendor/cache directory. It omits the development and test dependency groups before calling the bundle update command. Groups to be omitted can be specified with the without_groups parameter.

Default example:

Maestro::Plugin::RakeTasks::BundleTask.new

Invoke like so

$ rake bundle

Example overriding the dependency groups to be omitted:

Maestro::Plugin::RakeTasks::BundleTask.new do |t|
  t.without_groups= [ 'development' ]
end

The following attributes can be configured:

  • without_groups: an array of dependency groups to omit from the bundle. Defaults: development, test

Package Task

This task is used to package the plugin in a zip file. The basic usage assumes that you have a Maven POM file (pom.xml) containing the plugin name (artifactId) and version. If you do not have a pom.xml, you can specify the values in the Rakefile when configuring the PackageTask. You also must have a manifest template which contains a placeholder for the version which will be replaced by the package task.

Example using all defaults and a pom.xml:

Maestro::Plugin::RakeTasks::PackageTask.new

Invoke like so:

$ rake package

Example overriding some values:

Maestro::Plugin::RakeTasks::PackageTask.new do |t|
  t.verbose=false
  t.version='1.2.3'
  t.plugin_name='my-fancy-maestro-plugin'
end

The following attributes can be configured:

  • verbose: enable/disable verbose output. Default: true
  • directories: an array of directories to package. Defaults: src, vendor, images.
  • files: an array of files to package. Defaults: manifest.json, README.md, LICENSE
  • use_pom: read plugin name and version from the pom. Default: true
  • pom_path: path to the pom file. Default: ./pom.xml
  • manifest_template_path: path to the manifest template. Default: ./manifest.template.json
  • version: the plugin version. Defaults to the value defined in the pom.xml. Required if you are not using a pom.xml.
  • plugin_name: the plugin name. Defaults to the value defined in the pom.xml. Required if you are not using a pom.xml.
  • dest_dir: the destination directory of the zip file. Default: .

Example Rakefile

The following is an example Rakefile that can be used to build and test most Maestro Ruby plugins.

require 'rake/clean'
require 'maestro/plugin/rake_tasks'
require 'rspec/core/rake_task'

$:.push File.expand_path("../src", __FILE__)

CLEAN.include("manifest.json", "*-plugin-*.zip", "vendor", "package", "tmp", ".bundle")

task :default => :all
task :all => [:clean, :bundle, :spec, :package]

desc "Run specs"
RSpec::Core::RakeTask.new do |t|
  t.rspec_opts = "--format p --color"
end

Maestro::Plugin::RakeTasks::BundleTask.new

Maestro::Plugin::RakeTasks::PackageTask.new

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request