[](https://crates.io/crates/devbox)
[](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.