#!/usr/bin/env bash

find_package_owner() {
  local mirror=$1 rel=$2
  shift 2
  local start="$mirror${rel:+/$rel}" candidate owner="" d arg

  package_owner_from_dir() {
    d=$1
    while :; do
      if [ -f "$d/pnpm-lock.yaml" ] || [ -f "$d/package-lock.json" ] || [ -f "$d/bun.lock" ] || [ -f "$d/bun.lockb" ]; then
        printf '%s\n' "$d"
        return 0
      fi
      [ "$d" = "$mirror" ] && return 1
      d=$(dirname "$d")
      case "$d/" in "$mirror/"*) ;; *) return 1 ;; esac
    done
  }

  if owner=$(package_owner_from_dir "$start"); then
    printf '%s\n' "$owner"
    return 0
  fi

  for arg in "$@"; do
    case "$arg" in
      /*) candidate=$arg ;;
      *) candidate="$start/$arg" ;;
    esac
    [ -e "$candidate" ] || continue
    [ -d "$candidate" ] || candidate=$(dirname "$candidate")
    if owner=$(package_owner_from_dir "$candidate"); then
      printf '%s\n' "$owner"
      return 0
    fi
  done

  return 1
}
