mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 23:13:19 +00:00
lib.filesystem.pathType: Fix for filesystem root argument
Previously this function couldn't handle / being passed, it would throw an error: error: attribute '' missing at nixpkgs/lib/filesystem.nix:24:20: 23| */ 24| pathType = path: (readDir (dirOf path)).${baseNameOf path}; | ^ 25| Consequently this also fixes the lib.filesystem.{pathIsDirectory,pathIsRegularFile} functions.
This commit is contained in:
parent
5346636c20
commit
bb6eab0bdb
@ -22,7 +22,12 @@ in
|
|||||||
Returns the type of a path: regular (for file), symlink, or directory.
|
Returns the type of a path: regular (for file), symlink, or directory.
|
||||||
*/
|
*/
|
||||||
pathType = path:
|
pathType = path:
|
||||||
(readDir (dirOf path)).${baseNameOf path};
|
# 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
|
||||||
|
then "directory"
|
||||||
|
else (readDir (dirOf path)).${baseNameOf path};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns true if the path exists and is a directory, false otherwise.
|
Returns true if the path exists and is a directory, false otherwise.
|
||||||
|
@ -46,6 +46,7 @@ checkPathType() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkPathType "/" '"directory"'
|
||||||
checkPathType "$PWD/directory" '"directory"'
|
checkPathType "$PWD/directory" '"directory"'
|
||||||
checkPathType "$PWD/regular" '"regular"'
|
checkPathType "$PWD/regular" '"regular"'
|
||||||
checkPathType "$PWD/symlink" '"symlink"'
|
checkPathType "$PWD/symlink" '"symlink"'
|
||||||
@ -62,6 +63,7 @@ checkPathIsDirectory() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkPathIsDirectory "/" "true"
|
||||||
checkPathIsDirectory "$PWD/directory" "true"
|
checkPathIsDirectory "$PWD/directory" "true"
|
||||||
checkPathIsDirectory "$PWD/regular" "false"
|
checkPathIsDirectory "$PWD/regular" "false"
|
||||||
checkPathIsDirectory "$PWD/symlink" "false"
|
checkPathIsDirectory "$PWD/symlink" "false"
|
||||||
@ -79,6 +81,7 @@ checkPathIsRegularFile() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkPathIsRegularFile "/" "false"
|
||||||
checkPathIsRegularFile "$PWD/directory" "false"
|
checkPathIsRegularFile "$PWD/directory" "false"
|
||||||
checkPathIsRegularFile "$PWD/regular" "true"
|
checkPathIsRegularFile "$PWD/regular" "true"
|
||||||
checkPathIsRegularFile "$PWD/symlink" "false"
|
checkPathIsRegularFile "$PWD/symlink" "false"
|
||||||
|
Loading…
Reference in New Issue
Block a user