zsh-config/lazy-ros2.zsh

38 lines
861 B
Bash

# Lazy-load ros2 stuff
(( ${+ZSH_ROS2_ROOT} )) || return
# Define as a function so it can be overridden for speed
function zsh-load-ros2() {
source "${ZSH_ROS2_ROOT}/setup.zsh"
}
local defined=()
local file
for file in "${ZSH_ROS2_ROOT}/bin/"*; do
local base="${file:t}"
hash -- "${base}" 2>/dev/null && continue
defined+=("${base}")
done
local undef_args=() def
for def in ${defined}; do
undef_args+=("${(q)def}")
done
local exec
for exec in ${defined}; do
eval "
function \${(q)exec} {
printf 'Setting up ros2 with \"%s\"...\n\n' \\
\"\${(q)ZSH_ROS2_ROOT%/}/setup.zsh\"
unfunction ${undef_args}
zsh-load-ros2 ||
{ echo 'Failed to load ros2 libraries!'; return }
(( \${#} == 0 )) && ${(q)exec} || ${(q)exec} \"\${@}\"
}"
done
unset exec def file defined undef_args