repl: Use a temporary file for the expression
This makes it compatible with Nix 2.3+.
This commit is contained in:
parent
797297b609
commit
741d5c4fbb
1 changed files with 11 additions and 1 deletions
|
@ -1,4 +1,7 @@
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
use clap::{ArgMatches, Command as ClapCommand};
|
use clap::{ArgMatches, Command as ClapCommand};
|
||||||
|
use tempfile::Builder as TempFileBuilder;
|
||||||
use tokio::process::Command;
|
use tokio::process::Command;
|
||||||
|
|
||||||
use crate::error::ColmenaError;
|
use crate::error::ColmenaError;
|
||||||
|
@ -21,12 +24,19 @@ pub async fn run(_global_args: &ArgMatches, local_args: &ArgMatches) -> Result<(
|
||||||
|
|
||||||
let expr = hive.get_repl_expression();
|
let expr = hive.get_repl_expression();
|
||||||
|
|
||||||
|
let mut expr_file = TempFileBuilder::new()
|
||||||
|
.prefix("colmena-repl-")
|
||||||
|
.suffix(".nix")
|
||||||
|
.tempfile()?;
|
||||||
|
|
||||||
|
expr_file.write_all(expr.as_bytes())?;
|
||||||
|
|
||||||
let status = Command::new("nix")
|
let status = Command::new("nix")
|
||||||
.arg("repl")
|
.arg("repl")
|
||||||
// `nix repl` is expected to be marked as experimental:
|
// `nix repl` is expected to be marked as experimental:
|
||||||
// <https://github.com/NixOS/nix/issues/5604>
|
// <https://github.com/NixOS/nix/issues/5604>
|
||||||
.args(&["--experimental-features", "nix-command flakes"])
|
.args(&["--experimental-features", "nix-command flakes"])
|
||||||
.args(&["--expr", &expr])
|
.arg(expr_file.path())
|
||||||
.status()
|
.status()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue