penguin/utils

my env utils

bash/core/30_loader.bash

raw ยท 1146 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" "$@"
}