mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-12 16:53:37 +08:00
225f748f79
Can be used to retrieve a list of parent paths, useful for searching ancestors recursively via their absolute paths. Paths are returned from deepest to shallowest, starting from the path passed in. Paths are not validated for performance reasons. (Usually the input to __fish_parent_directories would be (pwd) or (dir $file).)
26 lines
496 B
Fish
26 lines
496 B
Fish
# Generates a list of parent directories for a given path
|
|
# i.e. /a/b/c/d -> [/a/b/c/, /a/b/, /a/, and /a]
|
|
function __fish_parent_directories
|
|
if test (count $argv) -ne 1
|
|
# for use in completions, so don't spew error messages
|
|
return 1
|
|
end
|
|
|
|
set -l splits (string split '/' $argv[1])
|
|
set -l parents
|
|
|
|
for split in $splits
|
|
if test (string length "$split") -eq 0
|
|
continue
|
|
end
|
|
|
|
set parents "$parents[1]/$split" $parents
|
|
end
|
|
|
|
for parent in $parents
|
|
echo $parent
|
|
end
|
|
|
|
return 0
|
|
end
|