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.
- Automatically building & running tasks.
- Managing taks in
Lakefile
or.lake
directory. - Use it with
cron
and other automation tools for more efficient workflows.
Crystal >= 0.9.0. If you're on Mac OS X installing with Homebrew, Lake will install Crystal for you.
System | Available Methods |
---|---|
All | Manual Installation |
OSX | Homebrew |
Ubuntu / Debian | Work in progress |
Windows | Not Supported |
brew tap adlerhsieh/lake
brew update
brew install lake
- Install Crystal.
- Download the latest lake executable.
- Move the executable to one of your
PATH
directory, e.g./usr/local/bin
. - Run
lake -v
andcrystal -v
to see if the installation is successful.
Create a Lakefile
in any project directory:
Task.hello # This is task name
puts "hello world" # This is task content
This creates a task named hello
. 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.
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.
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.
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.
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.
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 |
- Allow processing & executing tasks in
.lake
directory - Allow processing & executing
Lakefile
- Allow
Lakefile
and.lake
directory generation - Brew installation
- Usage & Instructions
- Remove failed build task in
tasks
directory - Allow executing multiple tasks in one command
- Remove reduntant
-t
when executing command - Setting up ci service
- Automatically install Crystal before installing Lake
- Allow
shards
support in.lake
- Allow dependency requirement
- Manual installation
- Argument support for tasks
- Allow symbols except "-" in task name, all separated by a single blank space
- DSL support that allows putting multiple tasks in a single task
- Allow looking for other
Lakefile
s if not in current directory - Allow global Lakefile and
-g
option
- apt-get installation
- Unit Test
- Acceptance Test
- Official website or something better than README as introduction (gh-pages or .org)
- Auto-detect non-character in task name and send warning
- Allow checking if
pwd
is in a git repo, crystal project, and has a Lakefile.
Read the Contributing guide