mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-03 20:11:15 -03:00
31 lines
992 B
Fish
31 lines
992 B
Fish
# localization: skip(private)
|
|
function __fish_data_with_directory
|
|
set -l relative_directory $argv[1]
|
|
set -l file_regex $argv[2]
|
|
set -l cmd $argv[3..]
|
|
set -l temp
|
|
set -l directory_ref
|
|
if set -q __fish_data_dir[1]
|
|
set directory_ref $__fish_data_dir/$relative_directory
|
|
else
|
|
set temp (__fish_mktemp_relative -d fish-data)
|
|
if set -l paths (status list-files $relative_directory |
|
|
string match -r \
|
|
"^$(string escape --style=regex $relative_directory)/(?:$file_regex)\$")
|
|
mkdir -p -- $temp/(string join \n $paths | path dirname | path sort -u)
|
|
or return
|
|
for path in $paths
|
|
status get-file $path >$temp/$path
|
|
or return
|
|
end
|
|
end
|
|
set directory_ref $temp/$relative_directory
|
|
end
|
|
$cmd $directory_ref
|
|
set -l saved_status $status
|
|
if set -q temp[1]
|
|
command rm -r $temp
|
|
end
|
|
return $saved_status
|
|
end
|