yet
===
`yet` (yet-another executor of tasks) is a tool for executing task written using the [rune](https://rune-rs.github.io/) programming language.
It aims at fitting my use-cases and workflow for the [CylonCore](https://cyloncore.com) and [auKsys](https://auksys.org) projects.
But you are very welcome to use it for your own projects, and contribute to the project, through merge requests.
Installation
============
To install `yet`, you need to have Rust and Cargo installed. If you don't have them installed, you can get them from [rustup.rs](https://rustup.rs/).
```bash
cargo install yet
```
Documentation
=============
Command-line usage
------------------
`yet` command line usage is available by running the command:
```bash
yet --help
```
To get started, create a demo configuration file in the current directory:
```bash
yet --create-config
```
The basic usage is to run a task:
```bash
yet taskname arg0 arg1...
```
With the previously created configuration file:
```bash
yet hello world
```
The `taskname` is the identifier for a task as defined in the `yet.yml` file. When executing a task, `yet` automatically searches for `yet.yml` files in the current directory and all parent directories, importing the tasks specified within them.
If a task with the same name is defined in both a parent directory and a subdirectory, the task in the subdirectory will override the one in the parent directory.
To run a task located in a subdirectory, you can specify the path to the task using the command:
```bash
yet path/to/subdir/taskname
```
This allows for flexible task management and execution across different directory levels.
yet.yml
-------
Tasks are defined in a `yet.yml` file. Which contains a root `tasks`, which is a dictionary where the An example is provided bellow:
```yaml
tasks:
install:
description: "Install yet."
command: !commands
- cargo install --path .
test:
description: "Run tests for yet."
command: !commands
- cargo test
- cd tests
- ruby test.rb
```
or more detailed information on configuring tasks, refer to the [yet.yml documentation](docs/yet_yml.md).
Rune
----
`Rune` is a scripting language with a syntax very similar to Rust. It is used as the primary scripting engine for `yet`. The documentation for the language can be found here:
* [Rune](https://rune-rs.github.io/book/): introduction to the Rune programming language.
* [Rune Modules](https://rune-rs.github.io/docs/): documentation about the general Rune modules.
Shell Integration
=================
`yet` provides shell completion integration for bash. Add the following line to your `.bashrc` or `.bash_profile` to enable completion:
```bash
eval "$(yet --shell-config bash)"
```