# mk (Make)
[](https://crates.io/crates/mk)
[](https://crates.io/crates/mk)
[](https://github.com/ffimnsr/mk-rs/blob/master/LICENSE-APACHE)
[](https://github.com/ffimnsr/mk-rs/blob/master/.github/workflows/ci.yaml)
> Efficiency is doing things right; effectiveness is doing the right things. This tool helps you do both.
Yet another task runner.
## Usage
### Using CLI
Here is a sample command line usage of `mk`.
```bash
mk -c tasks.yaml <task_name>
...or...
mk run <task_name>
```
Both commands above are same. The config file can be omitted as `mk` defaults to file `tasks.yaml`.
### Sample taskfile yaml
Let's create a sample yaml file called `tasks.yaml`.
```yaml
tasks:
task1:
commands:
- command: |
echo $FOO
echo $BAR
ignore_errors: false
verbose: true
- command: wel
ignore_errors: true
verbose: true
- command: echo $BAR
ignore_errors: false
verbose: true
depends_on:
- name: task1
description: This is a task
labels: {}
environment:
FOO: bar
env_file:
- test.env
```
This yaml task named `task1` can be run on `mk` with the command below:
```bash
mk task1
```
## Installation
Binary for different OS distribution can be downloaded [here](https://github.com/ffimnsr/mk-rs/releases). Linux, macOS, and Windows are supported.
### From source
If you're into **Rust**, then `mk` can be installed with `cargo`. The minimum supported version of Rust is `1.37.0`. The binaries produce may be bigger than expected as it contains debug symbols.
```bash
cargo install --locked mk
```
### Manual installation
Follow the instruction below to install and use `mk` on your system.
1. Download the binary for your OS distribution [here](https://github.com/ffimnsr/mk-rs/releases).
2. Copy it to your system binary directory (`/usr/local/bin`) or to your userspace binary directory (`$HOME/.local/bin`).
## License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
### References:
- https://taskfile.dev/ - Inspiration of this project