lake alternatives and similar shards
Based on the "Task management" category.
Alternatively, view lake alternatives based on common mentions on social networks and blogs.
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of lake or a related project?
Popular Comparisons
README
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
- [x] Allow processing & executing tasks in
.lake
directory - [x] Allow processing & executing
Lakefile
- [x] Allow
Lakefile
and.lake
directory generation - [x] Brew installation
- [x] Usage & Instructions
0.2.0
- [x] Remove failed build task in
tasks
directory - [x] Allow executing multiple tasks in one command
- [x] Remove reduntant
-t
when executing command - [x] Setting up ci service
- [x] Automatically install Crystal before installing Lake
- [x] Allow
shards
support in.lake
- [x] Allow dependency requirement
- [x] 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](contributing.md)