devbox 0.1.1

Developer toolbox for building and testing
Documentation
[![Crates.io](https://img.shields.io/crates/v/devbox.svg)](https://crates.io/crates/devbox)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

# devbox

A collection of small build related librarires intended to be used as `dev-dependencies`

## Install
To get started, add the following to Cargo.toml under `dev-dependencies`:
```toml
[dev-dependencies]
devbox = { version = "0.1" }
```

## Test macro
Adds parametrization capabilty to `#[test]` via `#[args]` attribute macro.

```rust
#[args(
    char_a: 'a';
    char_b: 'b' ! "unexpected character";
)]
#[test]
fn parametrized_test_for(character:_) {
    assert_eq!('a', character, "unexpected character");
}
```

Check [#\[args\]] attribute for full example and usage specification.

[#\[args\]]: https://doc.rust-lang.org/devbox/test/attr.args.html

## Build srcipt
Small utility library for easier file manipulation and external tool invocation in Rust build
sripts (build.rs) that avoids rebuilding up-to-date build artifacts.

```rust

pub fn main() {

    let build = Build::new();
    let websrc = build.manifest_dir().dir("webapp");
    let webwrk = build.out_dir().dir("webapp_build");
    let webwrk_pkg = webwrk.file("package.json");
    let webwrk_pkl = webwrk.file("package-lock.json");

    for unit in websrc.content("*") {
        unit.link_from_inside(&webwrk);
    }

    let npm = Cmd::new("npm").arg("--prefix").arg(webwrk.path());

    webwrk.dir("node_modules").mk_from("Install WebApp node packages", &webwrk_pkg + &webwrk_pkl, ||{
        npm.clone().arg("install").run();
        webwrk.dir("node_modules").touch();
    });

    webwrk.dir("dist").mk_from("Build WebApp using webpack", &webwrk.content("**"), || {
        npm.clone().arg("run").arg("build").run();
        webwrk.dir("dist").touch();
    });
}
```

Check [build] module for fully working example and usage specification.

[build]: https://doc.rust-lang.org/devbox/build/index.html

## License

Licensed under MIT license ([LICENSE](LICENSE) or https://opensource.org/licenses/MIT)

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in
Devbox by you, shall be licensed as MIT, without any additional terms or conditions.