# Copyright 2025-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit go-env go-module

# The only Go dependency, from go.sum. Deliberately old: upstream keeps
# esbuild buildable with Go 1.13.
GO_MODULE="golang.org/x/sys"
GO_MODULE_PV="v0.0.0-20220715151400-c0bba94af5f8"
GO_MODULE_P="${GO_MODULE//\//-}-${GO_MODULE_PV}"

DESCRIPTION="A modern, extremely fast, JavaScript and CSS bundler and minifier"
HOMEPAGE="https://esbuild.github.io/"
SRC_URI="
	https://github.com/evanw/esbuild/archive/v${PV}.tar.gz -> ${P}.tar.gz
	mirror://goproxy/${GO_MODULE}/@v/${GO_MODULE_PV}.zip -> ${GO_MODULE_P}.zip
	mirror://goproxy/${GO_MODULE}/@v/${GO_MODULE_PV}.mod -> ${GO_MODULE_P}.mod
"

LICENSE="BSD MIT"
SLOT="${PV}"
KEYWORDS="~amd64 ~arm64"

RESTRICT="test" # tests require more work, but chromium needs esbuild already.

src_unpack() {
	unpack "${P}.tar.gz"

	# Serve the module out of DISTDIR instead of proxy.golang.org; go
	# verifies it against go.sum as usual
	local proxy="${T}/go-proxy/${GO_MODULE}/@v"
	mkdir -p "${proxy}" || die
	cp "${DISTDIR}/${GO_MODULE_P}.zip" "${proxy}/${GO_MODULE_PV}.zip" || die
	cp "${DISTDIR}/${GO_MODULE_P}.mod" "${proxy}/${GO_MODULE_PV}.mod" || die
	echo "{\"Version\": \"${GO_MODULE_PV}\"}" > "${proxy}/${GO_MODULE_PV}.info" || die
	echo "${GO_MODULE_PV}" > "${proxy}/list" || die

	export GOPROXY="file://${T}/go-proxy"

	go-env_set_compile_environment
}

src_compile() {
	ego build -v -ldflags="-s -w" ./cmd/esbuild
}

src_install() {
	newbin esbuild esbuild-${PV}
}

src_test() {
	ego test -v -ldflags="-s -w" ./cmd/esbuild
}