Bake Cakefile into native Crystal code 🍞
Crystal CoffeeScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
spec
src
.editorconfig
.gitignore
.travis.yml
Cakefile
LICENSE
README.md
shard.yml

README.md

Cake-Bake

Cake-Bake [ka-ke-ba-ke] allows to bake Cakefile into native Crystal code.

Why?

Because sometimes cake tasks are wanted to be run as binaries.

For example, to run from a Docker container with an already built application: docker run my-crystal-app bin/cake db:migrate.

Installation

Add this to your application's shard.yml:

targets:
  cake:
    main: src/run/cake.cr

dependencies:
  cake-bake:
    github: vladfaust/cake-bake.cr

Usage

Given ./Cakefile:

require "./src/some_file" # These requires

task :foo
  puts "bar"
end

./src/run/cake.cr:

require "cake-bake"
Cake.bake("../../Cakefile") # Full path to Cakefile needed to properly resolve requires (see above)

# The Cakefile code will be put here, yay

Then execute from ./:

$ crystal src/run/cake -- foo
bar

$ crystal build src/run/cake
$ ./cake foo
bar

$ shards build
$ ./bin/cake foo
bar

Contributing

  1. Fork it ( https://github.com/vladfaust/cake-bake.cr/fork )
  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 a new Pull Request

Contributors