diff options
author | Vincent Ambo <mail@tazj.in> | 2022-10-04T20·21+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2022-10-07T14·24+0000 |
commit | 2478a6c5bac5d72f5a7a08709c84e471a1f3c763 (patch) | |
tree | 912b5b92614c74577ddcc4bf18b4881cee7323ff /tvix/eval | |
parent | 07e03498f26afbf647102d656c90d447f8586820 (diff) |
feat(tvix/eval): coerce values to paths when importing r/5050
This enables the use of string paths (and, in the future, derivations), as long as their string values represent an absolute path. Change-Id: I4b198efeb70415ed52f58bd1da6fa79a24dad14c Reviewed-on: https://cl.tvl.fyi/c/depot/+/6866 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval')
-rw-r--r-- | tvix/eval/src/builtins/impure.rs | 13 | ||||
-rw-r--r-- | tvix/eval/src/errors.rs | 2 |
2 files changed, 2 insertions, 13 deletions
diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index d73e5ccfa8f2..348963e89313 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -52,18 +52,7 @@ pub fn builtins_import( "import", &[true], move |mut args: Vec<Value>, vm: &mut VM| { - let path = match args.pop().unwrap() { - Value::Path(path) => path, - Value::String(_) => { - return Err(ErrorKind::NotImplemented("importing from string-paths")) - } - other => { - return Err(ErrorKind::TypeError { - expected: "path or string", - actual: other.type_of(), - }) - } - }; + let path = super::coerce_value_to_path(&args.pop().unwrap(), vm)?; let contents = std::fs::read_to_string(&path).map_err(|err| ErrorKind::ReadFileError { diff --git a/tvix/eval/src/errors.rs b/tvix/eval/src/errors.rs index b37469617160..50b1e9e31c44 100644 --- a/tvix/eval/src/errors.rs +++ b/tvix/eval/src/errors.rs @@ -262,7 +262,7 @@ to a missing value in the attribute set(s) included via `with`."#, ErrorKind::NotAnAbsolutePath(given) => { format!( - "string {} doesn't represent an absolute path", + "string '{}' does not represent an absolute path", given.to_string_lossy() ) } |