blob: 896808eb00fe084cccc45b955fc23a3bc7c0173b (
plain)
# shake - a simple shell-based command runner
`shake` is a simpler `just`.
Commands are stored in a file called `shakefile` using POSIX shell syntax:
```sh
HOST=$(uname -a)
shake_doc build
build() {
shake_echo_command cc *.c -o main
}
shake_doc test
test() {
build
shake_echo_command ./test --all
echo "Yay, all your tests passed!"
}
shake_doc b
alias b=build
```
```
$ shake -l
build
test
b
$ shake test
cc *.c -o main
./test --all
Yay, all your tests passed!
```
`shake` has many of `just`'s features, but not all. The following are not
supported:
- Windows, without installing something like Git Bash
- Recipes cannot accept command-line arguments
- `shake` does not have a custom syntax. It uses POSIX shell.
- It cannot support arbitrary languages. Just POSIX shell.
## Installation
Copy the `shake` file from this repo into your `~/.local/bin`
## Quick Start
Once `shake` is installed, create a file named `shakefile` in the root of your
project with the following contents:
```sh
default() {
echo "This is a recipe"
}
another-recipe() {
echo "This is another recipe"
}
```
By default, running `shake` with no arguments runs the `default` recipe. One or
more arguments specify the recipe(s) to run:
```
$ shake
This is a recipe
$ shake another-recipe
This is another recipe
```
## Contributing
`shake` is considered feature complete, but if you have a cool idea, feel free
to create an issue for it. If you do submit a patch, note that `shake` is
released under the [CC0](https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt)
public license and thus your changes must also be under this license.
|