RakeCommandFilter
RakeCommandFilter allows you to execute multiple rake commands in subprocesses and filter their output for easy review.
Installation
Add this line to your application's Gemfile:
gem 'rake_command_filter'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rake_command_filter
Purpose
Prior to checking in, I wanted to run all my favored validation tools (rubocop, rspec with simplecov, and yard), and review simple output like this:
OK rubocop 1.27s 15 files
OK spec 7.97s 11 passed
OK spec 7.97s 96.9 test coverage
OK yard 1.46s 100.0 documented
so that I did not need to dig through the results to determine if I was satisfied. Only if they failed did I want to see detailed output from a given command.
RakeCommandFilter does this, and can be extended to process the output of other tools.
Usage
Put this in your Rakefile, then run rake full_validation
.
require 'rake_command_filter'
RakeCommandFilter::RakeTask.new(:validate) do
desc 'Run full validation'
run_definition(RakeCommandFilter::ScssLintCommandDefinition.new) do
add_parameter('app/assets/stylesheets')
end
run_definition(RakeCommandFilter::RubocopCommandDefinition.new)
run_definition(RakeCommandFilter::RSpecCommandDefinition.new)
run_definition(RakeCommandFilter::YardCommandDefinition.new)
end
If you setup a rake command like that above, you can use this as a git pre-commit hook:
#!/bin/bash
rake full_validation
exit $?
in order to see the nice output whenever you commit.
Customization
You can customize rake_command_filter to run and parse the output of other commands by implementing your own CommandDefinition subclass. You can also alter an existing version in a block, as in this example from the tests:
task = RakeCommandFilter::RakeTask.new(:test_warn) do
desc 'My deployment task'
run_definition(RakeCommandFilter::YardCommandDefinition.new) do
add_parameter(' doc yard_warn.rb')
end
end
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/chrisjones-tripletri/rake_command_filter. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
The gem is available as open source under the terms of the MIT License.