lake alternatives and similar shards
Based on the "Task management" category.
Alternatively, view lake alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of lake or a related project?
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.
- Automatically building & running tasks.
- Managing taks in
- Use it with
cronand 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.
|Ubuntu / Debian||Work in progress|
Mac OS X
brew tap adlerhsieh/lake brew update brew install lake
- Install Crystal.
- Download the latest lake executable.
- Move the executable to one of your
crystal -vto see if the installation is successful.
Create your first task
Lakefile in any project directory:
Task.hello # This is task name puts "hello world" # This is task content
This creates a task named
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.")
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
.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.
|Short Flag||Long Flag||Description|
||Builds all tasks|
||Rebuilds all tasks|
||Displays help messages|
||Displays current version|
- [x] Allow processing & executing tasks in
- [x] Allow processing & executing
- [x] Allow
- [x] Brew installation
- [x] Usage & Instructions
- [x] Remove failed build task in
- [x] Allow executing multiple tasks in one command
- [x] Remove reduntant
-twhen executing command
- [x] Setting up ci service
- [x] Automatically install Crystal before installing Lake
- [x] Allow
- [x] Allow dependency requirement
- [x] 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
Lakefiles if not in current directory
- [ ] Allow global Lakefile and
- [ ] apt-get installation
- [ ] Unit Test
- [ ] Acceptance Test
- [ ] Official website or something better than README as introduction (gh-pages or .org)
In the future
- [ ] Auto-detect non-character in task name and send warning
- [ ] Allow checking if
pwdis in a git repo, crystal project, and has a Lakefile.
Read the [Contributing guide](contributing.md)