diff options
author | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-04-05 16:58:29 +0200 |
---|---|---|
committer | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-05-22 14:13:57 +0200 |
commit | d064d972f07b908db3efb909d6663bee3adf8d40 (patch) | |
tree | 3ba519508fcd3f5e27ea95d567cbb870cc554d3b /lib/filesystem.nix | |
parent | bb6eab0bdbe060cb578fc9be5925a76a1635424f (diff) |
lib.filesystem.pathType: Improve error for non-existent paths
Previously it would fail with error: attribute 'nonexistent' missing at nixpkgs/lib/filesystem.nix:29:10: 28| if dirOf path == path then "directory" 29| else (readDir (dirOf path)).${baseNameOf path}; | ^ 30|
Diffstat (limited to 'lib/filesystem.nix')
-rw-r--r-- | lib/filesystem.nix | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/filesystem.nix b/lib/filesystem.nix index 13f4ebb26402f..db120a48c64be 100644 --- a/lib/filesystem.nix +++ b/lib/filesystem.nix @@ -22,10 +22,14 @@ in Returns the type of a path: regular (for file), symlink, or directory. */ pathType = path: + if ! pathExists path + # Fail irrecoverably to mimic the historic behavior of this function and + # the new builtins.readFileType + then abort "lib.filesystem.pathType: Path ${toString path} does not exist." # The filesystem root is the only path where `dirOf / == /` and # `baseNameOf /` is not valid. We can detect this and directly return # "directory", since we know the filesystem root can't be anything else. - if dirOf path == path + else if dirOf path == path then "directory" else (readDir (dirOf path)).${baseNameOf path}; |