@ -98,28 +98,17 @@ make_shims() {
done
done
}
}
# Create an empty array for the list of registered shims and an empty
# string to use as a search index.
registered_shims=()
registered_shims_index=""
# We will keep track of shims registered for installation with the
# global `registered_shims` array and with a global search index
# string. The array will let us iterate over all registered shims. The
# index string will let us quickly check whether a shim with the given
# name has been registered or not.
registered_shims=" "
# Registers the name of a shim to be generated.
register_shim() {
register_shim() {
local shim="$@"
registered_shims["${#registered_shims[@]}"]="$shim"
registered_shims_index="$registered_shims_index/$shim/"
registered_shims="${registered_shims}${1} "
}
}
# To install all the registered shims, we iterate over the
# `registered_shims` array and create a link if one does not already
# exist.
# Install all the shims registered via `make_shims` or `register_shim` directly.
install_registered_shims() {
install_registered_shims() {
local shim file
local shim file
for shim in " ${ registered_shims[@]}" ; do
for shim in $registered_shims; do
file="${SHIM_PATH}/${shim}"
file="${SHIM_PATH}/${shim}"
[ -e "$file" ] || ln -f "$PROTOTYPE_SHIM_PATH" "$file"
[ -e "$file" ] || ln -f "$PROTOTYPE_SHIM_PATH" "$file"
done
done
@ -132,7 +121,7 @@ install_registered_shims() {
remove_stale_shims() {
remove_stale_shims() {
local shim
local shim
for shim in "$SHIM_PATH"/*; do
for shim in "$SHIM_PATH"/*; do
if [[ "$registered_shims_index" != *"/${shim##*/}/ "* ]]; then
if [[ "$registered_shims" != *" ${shim##*/} "* ]]; then
rm -f "$shim"
rm -f "$shim"
fi
fi
done
done