nix: Vec<String> -> &[S] where S: AsRef<OsStr>

This commit is contained in:
Graham Christensen 2019-04-13 09:21:40 -04:00
parent 09e20e5845
commit 62a66a8553
No known key found for this signature in database
GPG key ID: ACA1C1D120C83D5C

View file

@ -2,6 +2,7 @@ use ofborg::asynccmd::{AsyncCmd, SpawnedAsyncCmd};
use ofborg::partition_result;
use std::collections::HashMap;
use std::env;
use std::ffi::OsStr;
use std::fmt;
use std::fs;
use std::io::BufRead;
@ -161,7 +162,7 @@ impl Nix {
file: File,
attrs: Vec<String>,
) -> Result<fs::File, fs::File> {
let mut command = self.safe_command(&Operation::Instantiate, nixpkgs, vec![], &[]);
let mut command = self.safe_command::<&OsStr>(&Operation::Instantiate, nixpkgs, &[], &[]);
self.set_attrs_command(&mut command, file, attrs);
self.run(command, true)
}
@ -182,7 +183,7 @@ impl Nix {
attrargs.push(argstr.to_owned());
}
self.safe_command(&Operation::Evaluate, nixpkgs, attrargs, &extra_paths)
self.safe_command(&Operation::Evaluate, nixpkgs, &attrargs, &extra_paths)
}
pub fn safely_build_attrs(
@ -191,7 +192,7 @@ impl Nix {
file: File,
attrs: Vec<String>,
) -> Result<fs::File, fs::File> {
let mut command = self.safe_command(&Operation::Build, nixpkgs, vec![], &[]);
let mut command = self.safe_command::<&OsStr>(&Operation::Build, nixpkgs, &[], &[]);
self.set_attrs_command(&mut command, file, attrs);
self.run(command, true)
}
@ -202,7 +203,7 @@ impl Nix {
file: File,
attrs: Vec<String>,
) -> SpawnedAsyncCmd {
let mut command = self.safe_command(&Operation::Build, nixpkgs, vec![], &[]);
let mut command = self.safe_command::<&OsStr>(&Operation::Build, nixpkgs, &[], &[]);
self.set_attrs_command(&mut command, file, attrs);
AsyncCmd::new(command).spawn()
}
@ -231,7 +232,7 @@ impl Nix {
args: Vec<String>,
keep_stdout: bool,
) -> Result<fs::File, fs::File> {
self.run(self.safe_command(&op, nixpkgs, args, &[]), keep_stdout)
self.run(self.safe_command(&op, nixpkgs, &args, &[]), keep_stdout)
}
pub fn run(&self, mut cmd: Command, keep_stdout: bool) -> Result<fs::File, fs::File> {
@ -288,13 +289,16 @@ impl Nix {
(status.success(), stdout_reader, stderr_reader)
}
pub fn safe_command(
pub fn safe_command<S>(
&self,
op: &Operation,
nixpkgs: &Path,
args: Vec<String>,
args: &[S],
safe_paths: &[&Path],
) -> Command {
) -> Command
where
S: AsRef<OsStr>,
{
let nixpkgspath = format!("nixpkgs={}", nixpkgs.display());
let mut nixpath: Vec<String> = safe_paths
.iter()
@ -489,12 +493,7 @@ mod tests {
assert_eq!(op.to_string(), "nix-build");
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(
&op,
build_path().as_path(),
vec![String::from("--version")],
&[],
),
nix.safe_command(&op, build_path().as_path(), &["--version"], &[]),
true,
);
@ -512,12 +511,7 @@ mod tests {
assert_eq!(op.to_string(), "nix-instantiate");
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(
&op,
build_path().as_path(),
vec![String::from("--version")],
&[],
),
nix.safe_command(&op, build_path().as_path(), &["--version"], &[]),
true,
);
@ -531,12 +525,7 @@ mod tests {
assert_eq!(op.to_string(), "nix-env -qa --json");
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(
&op,
build_path().as_path(),
vec![String::from("--version")],
&[],
),
nix.safe_command(&op, build_path().as_path(), &["--version"], &[]),
true,
);
@ -554,12 +543,7 @@ mod tests {
assert_eq!(op.to_string(), "nix-env -qaP --no-name --out-path");
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(
&op,
build_path().as_path(),
vec![String::from("--version")],
&[],
),
nix.safe_command(&op, build_path().as_path(), &["--version"], &[]),
true,
);
@ -578,7 +562,7 @@ mod tests {
let nix = nix();
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(&env_noop(), build_path().as_path(), vec![], &[]),
nix.safe_command::<&OsStr>(&env_noop(), build_path().as_path(), &[], &[]),
true,
);
@ -605,7 +589,7 @@ mod tests {
);
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(&env_noop(), build_path().as_path(), vec![], &[]),
nix.safe_command::<&OsStr>(&env_noop(), build_path().as_path(), &[], &[]),
true,
);
@ -628,7 +612,7 @@ mod tests {
let op = noop(Operation::Build);
let ret: Result<fs::File, fs::File> = nix.run(
nix.safe_command(&op, build_path().as_path(), vec![], &[]),
nix.safe_command::<&OsStr>(&op, build_path().as_path(), &[], &[]),
true,
);
@ -644,7 +628,7 @@ mod tests {
let nix = nix();
let op = noop(Operation::Build);
let mut command = nix.safe_command(&op, build_path().as_path(), vec![], &[]);
let mut command = nix.safe_command::<&OsStr>(&op, build_path().as_path(), &[], &[]);
nix.set_attrs_command(
&mut command,
File::DefaultNixpkgs,
@ -661,7 +645,7 @@ mod tests {
let nix = nix();
let op = noop(Operation::Instantiate);
let mut command = nix.safe_command(&op, build_path().as_path(), vec![], &[]);
let mut command = nix.safe_command::<&OsStr>(&op, build_path().as_path(), &[], &[]);
nix.set_attrs_command(
&mut command,
File::ReleaseNixOS,