lake alternatives and similar shards
Based on the "Task management" category
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)