[![Latest Version]][crates.io] [![Documentation]][docs.rs] ![License]
Denim is an alternative way to make and run Rust "scripts" with focus on minimal runtime overhead and ease of script development.
# Features
* Full real-time output of `cargo` command runs.
* Support for `Cargo.toml` definitions within script source.
* Sensible script templates.
* Very low execution overhead after script was built.
* `#!` support.
* Create, build and tests scripts without interrupting existing script callers.
# Non-goals
* Run inline scripts - use `cargo script(er)` for this.
* Non-Linux support.
# Installation
You will need Rust installed (tested with 1.64.0).
```sh
cargo install denim
```
# Examples
Crate new minimal script and build it.
```sh
denim new --bare hello_world
```
Crate new [cotton](https://github.com/jpastuszek/cotton) prelude script and build it (this will take a moment).
```sh
denim new hello_world
```
Now you can run the script as any other binary.
Note that you can also run the script without building it first - the build will be done silently before program is executed.
```sh
./hello_world
```
After making changes to script it needs to be rebuild for them to take effect.
Executing script directly (e.g. `./hello_world`) will execute last built version until changed script builds successfully.
```sh
denim build hello_world
```
Rebuild and run script after making changes.
```sh
denim run hello_world
```
Run tests.
```sh
denim test hello_world
```
Check script.
```sh
denim check hello_world
```
[crates.io]: https://crates.io/crates/denim
[Latest Version]: https://img.shields.io/crates/v/denim.svg
[Documentation]: https://docs.rs/denim/badge.svg
[docs.rs]: https://docs.rs/denim
[License]: https://img.shields.io/crates/l/denim.svg