let ws = args.workspace(config)?;
let mut compile_opts = args.compile_options(config, CompileMode::Build)?;
compile_opts.export_dir = args.value_of_path("out-dir", config);
+ if compile_opts.export_dir.is_some() && !config.cli_unstable().out_dir {
+ Err(format_err!(
+ "`--out-dir` flag is unstable, pass `-Z out-dir` to enable it"
+ ))?;
+ };
ops::compile(&ws, &compile_opts)?;
Ok(())
}
pub no_index_update: bool,
pub avoid_dev_deps: bool,
pub minimal_versions: bool,
+ pub out_dir: bool,
}
impl CliUnstable {
"no-index-update" => self.no_index_update = true,
"avoid-dev-deps" => self.avoid_dev_deps = true,
"minimal-versions" => self.minimal_versions = true,
+ "out-dir" => self.out_dir = true,
_ => bail!("unknown `-Z` flag specified: {}", k),
}
+use cargotest::ChannelChanger;
use cargotest::support::{execs, project};
use hamcrest::assert_that;
use std::path::Path;
.file("src/main.rs", r#"fn main() { println!("Hello, World!") }"#)
.build();
- assert_that(p.cargo("build --out-dir out"), execs().with_status(0));
+ assert_that(
+ p.cargo("build -Z out-dir --out-dir out")
+ .masquerade_as_nightly_cargo(),
+ execs().with_status(0),
+ );
check_dir_contents(
&p.root().join("out"),
&["foo"],
)
.build();
- assert_that(p.cargo("build --out-dir out"), execs().with_status(0));
+ assert_that(
+ p.cargo("build -Z out-dir --out-dir out")
+ .masquerade_as_nightly_cargo(),
+ execs().with_status(0),
+ );
check_dir_contents(
&p.root().join("out"),
&["libfoo.a"],
)
.build();
- assert_that(p.cargo("build --out-dir out"), execs().with_status(0));
+ assert_that(
+ p.cargo("build -Z out-dir --out-dir out")
+ .masquerade_as_nightly_cargo(),
+ execs().with_status(0),
+ );
check_dir_contents(
&p.root().join("out"),
&["libfoo.so"],
)
.build();
- assert_that(p.cargo("build --out-dir out"), execs().with_status(0));
+ assert_that(
+ p.cargo("build -Z out-dir --out-dir out")
+ .masquerade_as_nightly_cargo(),
+ execs().with_status(0),
+ );
check_dir_contents(
&p.root().join("out"),
&["libfoo.rlib"],
.build();
assert_that(
- p.cargo("build --bin foo --out-dir out"),
+ p.cargo("build -Z out-dir --bin foo --out-dir out")
+ .masquerade_as_nightly_cargo(),
execs().with_status(0),
);
check_dir_contents(