#!/usr/bin/env bash
set -euo pipefail
. "$(dirname "$0")/lib.sh"

pkg_path=$1
url=$2; url=${url#https://}; url=${url%.git}
version=${3:-}
host=${url%%/*}
owner=$(basename "$(dirname "$url")")
repo_name=${url##*/}
pkg=${pkg_path##*/}
repo_url="https://$url"
api=$(resolve_forge "$host" "$owner" "$repo_name")

[[ -n $version ]] || version=$(curl -fsSL "$api/releases/latest" | jq -r '.tag_name' | sed 's/^v//')

renovate_meta=$(get_renovate_meta "$host" "$owner" "$repo_name" "$version")
mapfile -t renovate_lines <<< "$renovate_meta"

work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT

tag=$(fetch_release_tag "$repo_url" "$version")
tag_prefix=${tag%"$version"}
src=$(fetch_source "$repo_url/archive/refs/tags/$tag.tar.gz" "$work")

mkdir -p "$pkg_path"
file="$pkg_path/$pkg-$version.ebuild"

if [[ -f "$src/Cargo.toml" ]]; then
    "$(dirname "$0")/new-cargo-ebuild.sh" "$pkg_path" "$repo_url" "$version" "$src" "$tag_prefix"
    sed -i "/# Autogenerated/a ${renovate_lines[0]}\n${renovate_lines[1]}" "$file"
else
    cat > "$file" <<EOF
$renovate_meta

EAPI=8

DESCRIPTION=""
HOMEPAGE=""
SRC_URI="$repo_url/archive/${tag_prefix}/refs/tags/\${PV}.tar.gz -> \${P}.tar.gz"

LICENSE=""
SLOT="0"
KEYWORDS="~amd64"
EOF
fi

desc=$(fetch_description "$api" "$pkg")
sed -i -e "s|^HOMEPAGE=.*|HOMEPAGE=\"$repo_url\"|" \
    -e "s|^DESCRIPTION=.*|DESCRIPTION=\"$desc\"|" \
    "$file"

ebuild "$file" manifest
"$(dirname "$0")/check-ebuild.sh" "$file"
echo "created $file"
