async-cmd 0.1.1

A tool to run shell commands in parallel.
# async

`async` is a tool to run shell commands in parallel and is designed to be able to quickly parallelize shell scripts with minimal changes.
It was inspired by [GNU Parallel](https://www.gnu.org/software/parallel/), with the main difference being that `async` retains state between commands by running a server in the background.


## Usage

All information about the command line interface is available using `async --help`. Below is an example on how to use `async` to parallelize commands:

```bash
#!/bin/bash
S="/tmp/example_socket"

async -s="$S" server --start

for i in {1..20}; do
    # prints command output to stdout
    async -s="$S" cmd -- bash -c "sleep 1 && echo test $i"
done

# wait until all commands are finished
async -s="$S" wait

# configure the server to run four commands in parallel
async -s="$S" server -j4

mkdir "/tmp/ex_dir"
for i in {21..40}; do
    # redirects command output to /tmp/ex_dir/file*
    async -s="$S" cmd -o "/tmp/ex_dir/file$i" -- bash -c "sleep 1 && echo test $i"
done

async -s="$S" wait

# stops server
async -s="$S" server --stop
```

If you encounter an unexpected error or crash, please turn on logging by setting the environment variable `RUST_LOG=debug` and open an issue on the Github repository.


## Installation

`async` can be installed using cargo with `cargo install async-cmd` or from the AUR.