Mason
Build things
$ gem install mason
Install buildpacks locally
$ mason buildpacks
* buildpacks (~/.mason/buildpacks)
= nodejs: https://github.com/heroku/heroku-buildpack-nodejs.git
= ruby: https://github.com/ddollar/heroku-buildpack-ruby.git
$ mason buildpacks:install https://github.com/heroku/heroku-buildpack-python.git
* installing buildpack https://github.com/heroku/heroku-buildpack-python.git
Use buildpacks to build things
$ mason build /tmp/app
* detecting buildpack... done
= name: Ruby
= url: https://github.com/heroku/heroku-buildpack-ruby.git
* compiling:
... COMPILE OUTPUT
* packaging... done
= type: dir
= file: /tmp/mason.out
$ mason build /tmp/app -t dir -o /tmp/compiledapp
* detecting buildpack... done
= name: Ruby
= url: https://github.com/heroku/heroku-buildpack-ruby.git
* compiling...
... COMPILE OUTPUT
* packaging... done
= type: dir
= dir: /tmp/compiledapp
$ mason build /tmp/app -b https://github.com/ddollar/buildpack-other.git -t tgz
* detecting buildpack... done
= name: Other
= url: https://github.com/ddollar/buildpack-other.git
* compiling...
... COMPILE OUTPUT
* packaging... done
= type: tgz
= file: /tmp/app.tgz
Build things for other platforms using Vagrant
You will need VirtualBox for Vagrant to function.
$ gem install vagrant
$ vagrant box add lucid64 http://files.vagrantup.com/lucid64.box
$ mason stacks:create lucid64
* creating stack lucid64... done
$ mason stacks:up lucid64
* booting stack lucid64 (this may take a while)... done
$ mason:build /tmp/app -t tgz -o /tmp/compiled.tgz -s lucid64
* booting stack lucid64 (this may take a while)... done
* detecting buildpack... done
= name: Baz
= url: https://github.com/ddollar/buildpack-baz.git
* compiling...
... COMPILE OUTPUT
* packaging... done
= type: tgz
= dir: /tmp/compiled.tgz