cli: Support passing --impure

This commit is contained in:
Zhaofeng Li 2022-08-16 20:15:43 -06:00
parent 8aca525788
commit 80426aa814
4 changed files with 27 additions and 0 deletions

View file

@ -124,6 +124,12 @@ pub fn build_cli(include_internal: bool) -> ClapCommand<'static> {
.long_help("Passes --show-trace to Nix commands") .long_help("Passes --show-trace to Nix commands")
.global(true) .global(true)
.takes_value(false)) .takes_value(false))
.arg(Arg::new("impure")
.long("impure")
.help("Allow impure expressions")
.long_help("Passes --impure to Nix commands")
.global(true)
.takes_value(false))
.arg(Arg::new("color") .arg(Arg::new("color")
.long("color") .long("color")
.help("When to colorize the output") .help("When to colorize the output")

View file

@ -49,6 +49,9 @@ pub struct Hive {
/// Whether to pass --show-trace in Nix commands. /// Whether to pass --show-trace in Nix commands.
show_trace: bool, show_trace: bool,
/// Whether to pass --impure in Nix commands.
impure: bool,
meta_config: OnceCell<MetaConfig>, meta_config: OnceCell<MetaConfig>,
} }
@ -100,6 +103,7 @@ impl Hive {
context_dir, context_dir,
assets, assets,
show_trace: false, show_trace: false,
impure: false,
meta_config: OnceCell::new(), meta_config: OnceCell::new(),
}) })
} }
@ -123,11 +127,16 @@ impl Hive {
self.show_trace = value; self.show_trace = value;
} }
pub fn set_impure(&mut self, impure: bool) {
self.impure = impure;
}
/// Returns Nix options to set for this Hive. /// Returns Nix options to set for this Hive.
pub fn nix_options(&self) -> NixOptions { pub fn nix_options(&self) -> NixOptions {
let mut options = NixOptions::default(); let mut options = NixOptions::default();
options.set_show_trace(self.show_trace); options.set_show_trace(self.show_trace);
options.set_pure_eval(self.path.is_flake()); options.set_pure_eval(self.path.is_flake());
options.set_impure(self.impure);
options options
} }

View file

@ -197,6 +197,10 @@ impl NixOptions {
self.pure_eval = pure_eval; self.pure_eval = pure_eval;
} }
pub fn set_impure(&mut self, impure: bool) {
self.impure = impure;
}
pub fn set_builders(&mut self, builders: Option<String>) { pub fn set_builders(&mut self, builders: Option<String>) {
self.builders = builders; self.builders = builders;
} }

View file

@ -250,6 +250,10 @@ pub async fn hive_from_args(args: &ArgMatches) -> ColmenaResult<Hive> {
hive.set_show_trace(true); hive.set_show_trace(true);
} }
if args.is_present("impure") {
hive.set_impure(true);
}
return Ok(hive); return Ok(hive);
} }
@ -273,6 +277,10 @@ pub async fn hive_from_args(args: &ArgMatches) -> ColmenaResult<Hive> {
hive.set_show_trace(true); hive.set_show_trace(true);
} }
if args.is_present("impure") {
hive.set_impure(true);
}
Ok(hive) Ok(hive)
} }