lake 0.2.0
Lake 
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
- Automatically building & running tasks.
- Managing taks in
Lakefile
or.lake
directory. - Use it with
cron
and other automation tools for more efficient workflows.
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
Manual Installation
- 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.
Usage
Create your first task
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.
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
- Allow processing & executing tasks in
.lake
directory - Allow processing & executing
Lakefile
- Allow
Lakefile
and.lake
directory generation - Brew installation
- Usage & Instructions
0.2.0
- 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
0.3.0
- 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
1.0.0
- 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
pwd
is in a git repo, crystal project, and has a Lakefile.
Contributing
Read the Contributing guide
lake
- 9
- 0
- 0
- 0
- 1
- almost 10 years ago
- October 19, 2015
MIT License
Wed, 01 Oct 2025 19:26:39 GMT