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

EAPI=8

CODENAME="cheddar"

inherit go-module systemd

DESCRIPTION="A modern HTTP reverse proxy and load balancer made to deploy microservices"
HOMEPAGE="https://traefik.io"
SRC_URI="https://github.com/traefik/traefik/releases/download/v${PV}/${PN}-v${PV}.src.tar.gz -> ${P}.tar.gz"

S="${WORKDIR}"
WEBUI="${S}/webui"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="debug systemd"

DEPEND="acct-group/traefik
	acct-user/traefik"
RDEPEND="${DEPEND}"
BDEPEND=">=dev-lang/go-1.23
	=net-libs/nodejs-22*
	sys-apps/yarn"

RESTRICT="mirror"

pkg_pretend() {
	(has network-sandbox ${FEATURES}) && die "You need to disable 'network-sandbox' for this Ebuild in FEATURES"
}

src_unpack() {
	default
	pushd "${S}" >& /dev/null || die
	ego mod vendor
	popd >& /dev/null || die
}

src_compile() {

	local CURRENT_DATE="$(date -u "+%Y-%m-%d_%I:%M")"

	echo "Build Traefik WebUI"

	cd "${WEBUI}"
	mkdir -p "${WEBUI}/static"
	yarn install
	npm run build:nc

	echo "Build Traefik Binary"

	cd "${S}"

	CGO_ENABLED=0 GOGC=off go build -ldflags="-s -w \
		-X github.com/traefik/traefik/v3/pkg/version.Version=${PV} \
		-X github.com/traefik/traefik/v3/pkg/version.Codename=${CODENAME} \
		-X github.com/traefik/traefik/v3/pkg/version.BuildDate=${CURRENT_DATE} \
	" -installsuffix nocgo ./cmd/traefik

}

src_install() {

	dobin traefik
	einstalldocs

	newconfd "${FILESDIR}/${PN}.confd" "${PN}"

	if use systemd ; then
		systemd_dounit "${FILESDIR}/${PN}.service"
	else
		newinitd "${FILESDIR}/${PN}.initd" "${PN}"
	fi

	insinto /etc/traefik
	newins traefik.sample.toml traefik.toml.example

	diropts -o traefik -g traefik -m 0750
	keepdir /var/log/traefik

}