jake 0.1.1

Make-like task executor for Unix OS.
jake-0.1.1 is not a library.

jake

jake (crasis for "just make") is a Make-like task executor for Unix-based operating systems.

It is based on TOML tasks definition (stored in a file called jakefile.toml) and can execute commands resolving their dependencies and passing additional options.

Installation

With cargo (recommended):

cargo install jake

With npm:

npm install -g @cle-does-things/jake@latest

Example jakefile.toml

Here is an example for task definition:

default = { command = "cat README.md" }
say-hello = { command = "echo 'hello'" }
say-hello-back = { command = "echo 'hello back'" }
say-bye = { command = "echo 'bye'", depends_on = ["say-hello", "say-hello-back"] }
list = { command = "ls" }

And here is the anatomy of a definition:

say-bye = { command = "echo 'bye'", depends_on = ["say-hello", "say-hello-back"] }
   |                |                            |
Task name    Command to execute    Array of tasks to be executed _before_
                                               the task itself

While depends_on is optional (if not provided, the task does not depend on anything), command is a required key.

You can use the default task name to indicate the task that should be executed by default when none is provided to jake (otherwise, the default task will be the first one in the file).

Example Usage

Execute default task:

jake

Output:

# jake

`jake` (crasis for "just make") is a [Make](https://en.wikipedia.org/wiki/Make_(software))-like task executor for Unix-based operating systems.

...

Execute a task that does not depend on anything:

jake say-hello

Output:

'hello'

Execute a task that depends on other tasks:

jake say-bye

Output:

'hello'
'hello back'
'bye'

Execute a task passing additional flags:

jake list --options "-la"

Output:

total 48
drwxr-xr-x@  10 clee  staff   320 Feb 13 11:14 .
drwxr-xr-x@ 125 clee  staff  4000 Feb 13 10:20 ..
drwxr-xr-x@   9 clee  staff   288 Feb 13 10:20 .git
-rw-r--r--@   1 clee  staff     8 Feb 13 10:20 .gitignore
-rw-r--r--@   1 clee  staff  7656 Feb 13 11:13 Cargo.lock
-rw-r--r--@   1 clee  staff   162 Feb 13 11:13 Cargo.toml
-rw-r--r--@   1 clee  staff   332 Feb 13 11:21 jakefile.toml
-rw-r--r--@   1 clee  staff   152 Feb 13 11:16 README.md
drwxr-xr-x@   4 clee  staff   128 Feb 13 10:22 src
drwxr-xr-x@   6 clee  staff   192 Feb 13 10:22 target

In GitHub CI/CD

You can use the setup-jake action to set up jake and use it in your GitHub Actions workflows.

License

This project is provided under MIT license.