rbash_url() { local path="$1" printf '%s/%s/raw/%s/%s/%s\n' \ "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF" "$RBASH_PATH" "$path" } rbash_download() { local url="$1" if command -v curl >/dev/null 2>&1; then curl -fsSL "$url" || { local rc=$? echo "rbash: download failed: $url" >&2 echo "rbash: curl exit code: $rc" >&2 return "$rc" } elif command -v wget >/dev/null 2>&1; then wget -qO- "$url" || { local rc=$? echo "rbash: download failed: $url" >&2 echo "rbash: wget exit code: $rc" >&2 return "$rc" } else echo "rbash: curl or wget is required" >&2 return 127 fi } rbash_cache() { local url="$1" local key file if command -v md5sum >/dev/null 2>&1; then key="$(printf '%s' "$url" | md5sum | cut -d' ' -f1)" else key="$(printf '%s' "$url" | md5 | cut -d' ' -f1)" fi file="$RBASH_CACHE_DIR/$key" if [ ! -f "$file" ]; then rbash_download "$url" > "$file" || { rm -f "$file" return 1 } chmod 700 "$file" fi printf '%s\n' "$file" } _require_jq() { if ! command -v jq >/dev/null 2>&1; then echo "This command requires jq." >&2 return 1 fi }