bash/core/30_loader.bash
raw ยท 1145 bytes
rbash_load() {
local rel="$1"
local url file
if [ -z "${_RBASH_MERGE_START:-}" ]; then
if [ -n "$_RBASH_LOADED" ]; then
return 0
fi
if [ -f "$RBASH_MERGED" ]; then
# shellcheck source=/dev/null
source "$RBASH_MERGED" && {
_RBASH_LOADED=1
return 0
}
rm -f "$RBASH_MERGED"
fi
fi
echo "Load: $rel"
url="$(rbash_url "$rel")"
file="$(rbash_cache "$url")" || {
echo " ..download failed" >&2
return 1
}
# shellcheck source=/dev/null
if source "$file"; then
{
printf 'echo "Load: %s"\n' "$rel"
cat "$file"
printf '\n'
} >> "$RBASH_MERGED"
else
echo " ..failed" >&2
printf 'echo "Skipped: %s. Use rbash-reload to try again."\n' "$rel" >> "$RBASH_MERGED"
fi
chmod 700 "$RBASH_MERGED"
}
rbash-reload() {
_RBASH_LOADED=
_RBASH_MERGE_START=1
rm -f "$RBASH_MERGED"
# shellcheck source=/dev/null
source "$RBASH_CONFIG"
_RBASH_MERGE_START=
}
rbash-run() {
local rel="$1"
local file
shift || true
echo "Getting: $rel"
file="$(rbash_cache "$(rbash_url "$rel")")" || return 1
"$file" "$@"
}