Lake Build Status

Rake is productive, but we want it faster.

Lake is a rake-inspired tool in Crystal-lang for managing you tasks. Tasks are automatically built & run through the command line interface. It take advantages of the performance of Crystal and the utility of rake, helping you run recursive tasks in amazing speed.

Features

Requirement

Crystal >= 0.9.0. If you're on Mac OS X installing with Homebrew, Lake will install Crystal for you.

Installtion

| System | Available Methods | | -------- | ------------------- | | All | Manual Installation | | OSX | Homebrew | | Ubuntu / Debian | Work in progress | | Windows | Not Supported |

Mac OS X

brew tap adlerhsieh/lake
brew update
brew install lake

Installtion details

Manual Installation

  1. Install Crystal.
  2. Download the latest lake executable.
  3. Move the executable to one of your PATH directory, e.g. /usr/local/bin.
  4. Run lake -v and crystal -v to see if the installation is successful.

Usage

Create your first task

Create a Lakefile in any project directory:

Task.hello           # This is title
  puts "hello world" # This is code

In Lake DSL, all tasks should start with a Task. followed by a task name, which is hello in this case. Indentation in the block is not required.

Save the file, and run:

lake hello

It compiles and build a task file for hello task. You should see hello world on screen and that's it. Write any script you want and run it this way.

Writing mulitple tasks in a single file

Task.salute
  puts "salute!"

Task.write
  File.write("./story.txt", "Mary has a little lamb.")

Each Task forms a block that runs the code inside. It is not a Crystal block so it allows defining a class and method in the code as in normal Crystal context.

Dependencies

If you're using dependencies, require them in the task block like:

Task.query
  require "crystal-mysql"

Lake shares dependencies with your project, so run lake command in the project root directory where libs and .shards directory exist.

Second time is faster

The first time you run a task is a bit slower, but the second time is blazingly fast. It is because Crystal is a compiled language, so it is necessary to build a task before running it. Lake automatically checks for change in all tasks and only build tasks that have any change.

Work with multiple files

If you have many tasks in a project, separate them in different files. In addition to Lakefile, you can add any .cr file in .lake directory. All .cr files in the directory will be considered lake tasks.

Options

| Short Flag | Long Flag | Description |----------- |-------------|----------- | |-b |--build | Builds all tasks | |-r |--rebuild | Rebuilds all tasks | |-h |--help | Displays help messages | |-v |--version | Displays current version |

Progress

0.1.0
0.2.0
0.3.0
1.0.0
In the future

Contributing

Read the Contributing guide