dotfiles/fish/functions/import.fish

38 lines
1.0 KiB
Fish
Raw Normal View History

#!/usr/bin/env
function parent_dir
set -f trace (status stack-trace)
# By index:
# 1: in command substitution
# 2: parent.fish line
# 3: in function 'parent'
# 4: caller import line
# 5: in command substitution
# 6: caller "parent" invokation line
# 7: in function calling parent
# 8: jackpot! here's the parent of the caller
set -f parent_line $trace[8]
set -f parent_split (string split 'of file' $parent_line)
set -f parent (string trim $parent_split[2])
# qualify ~
set -f parent (string replace '~' "$HOME" $parent)
# Qualify the path to absolute and remove the filename
set -f parent_dir (realpath $parent)
set -f parent (string join '/' (string split '/' $parent_dir)[1..-2])
echo $parent
end
function import
set -f self_directory (parent_dir)
if set -q debug;
echo "importing $argv.fish from [$self_directory]"
end
if starts_with '/' "$argv"
source "$argv.fish"
return 0
end
source $self_directory/"$argv.fish"
end