use noob_builder::Builder;
#[allow(dead_code)]
#[derive(Debug, Builder)]
struct Command {
executable: String,
args: Vec<String>,
env: Vec<String>,
current_dir: Option<String>,
}
#[test]
fn test_command() {
let command = Command::builder()
.executable("cargo".to_owned())
.args(vec!["build".to_owned(), "--release".to_owned()])
.env(vec![])
.build()
.unwrap();
assert!(command.current_dir.is_none());
let command = Command::builder()
.executable("cargo".to_owned())
.args(vec!["build".to_owned(), "--release".to_owned()])
.env(vec![])
.current_dir("..".to_owned())
.build()
.unwrap();
assert!(command.current_dir.is_some());
println!("{:?}", command);
}
#[allow(dead_code)]
#[derive(Debug, Builder)]
struct CommandWithAttr {
executable: String,
#[builder(each = "arg")]
args: Vec<String>,
#[builder(each = "env", default = "vec![]")]
env: Vec<String>,
current_dir: Option<String>,
}
#[test]
fn command_with_attr() {
let command = CommandWithAttr::builder()
.executable("cargo".to_owned())
.arg("build".to_owned())
.arg("--release".to_owned())
.build()
.unwrap();
assert_eq!(command.executable, "cargo");
assert_eq!(command.args, vec!["build", "--release"]);
println!("{:?}", command);
}