# MallardScript
[](https://crates.io/crates/mallardscript)
[](https://app.travis-ci.com/github/Nate-Wilkins/mallardscript)
[](https://crates.io/crates/mallardscript)
[](https://github.com/Nate-Wilkins/mallardscript/issues)
[](https://github.com/Nate-Wilkins/mallardscript/blob/main/LICENSE)
> Hak5 DuckyScript extended language compiler.
## Installation
```
cargo install mallardscript
```
## Usage
Compiles [MallardScript](https://github.com/Nate-Wilkins/pest_duckyscript) to DuckyScript!
```
mallardscript build --input src/index.ducky --output output/index.ducky
```
## Configuration
### Shell Completions
You can put this in your `.zshrc` file (just make sure `$HOME/.zsh_functions/` is in your
`fpath`):
```
if [[ ! -f "$HOME/.zsh_functions/_mallardscript" ]]; then
mallardscript completions --type zsh > "$HOME/.zsh_functions/_mallardscript"
fi
```
Or you can generate yours with:
```
mallardscript completions --type $SHELL # Where $SHELL is zsh,bash,fish,elvish,powershell
```
## Development
Written in rust. Workflows are defined in `.envrc.sh`.
## Roadmap
- Encode directly (or by library ref) in this project, so users don't have to compile twice.
- [Package System Binaries](https://rust-cli.github.io/book/tutorial/packaging.html)
- Configuration file like `.mallardscriptrc`.
- Source errors would be really nice to have.
Can be implemented with [miette](https://crates.io/crates/miette).
Also view [pest miette](https://github.com/pest-parser/pest/issues/582).