# Contributor: Joe Holden <jwh@zorins.us>
# Contributor: Michał Polański <michal@polanski.me>
# Contributor: Fabricio Silva <hi@fabricio.dev>
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
pkgname=traefik
pkgver=3.4.0
pkgrel=0
pkgdesc="The Cloud Native Edge Router"
url="https://traefik.io/"
arch="all"
license="MIT"
makedepends="go"
checkdepends="tzdata"
install="$pkgname.pre-install"
pkgusers="$pkgname"
pkggroups="$pkgname"
subpackages="$pkgname-doc $pkgname-openrc"
options="net setcap chmod-clean"
source="$pkgname-$pkgver.tar.gz::https://github.com/traefik/traefik/releases/download/v$pkgver/traefik-v$pkgver.src.tar.gz
	traefik.initd
	traefik.confd
	traefik.yaml
	logs_tests.patch
	"
builddir="$srcdir"

# secfixes:
#   3.1.3-r0:
#     - CVE-2024-45410
#   2.9.10-r0:
#     - CVE-2023-29013
#     - CVE-2023-24534
#   2.9.6-r0:
#     - CVE-2022-23469
#     - CVE-2022-46153
#   2.2.8-r0:
#     - CVE-2020-15129

# Tests are broken on most architectures.
if [ "$CARCH" != x86_64 ]; then
	options="$options !check"
fi

build() {
	local builddate="$(date -u "+%Y-%m-%dT%TZ" ${SOURCE_DATE_EPOCH:+-d @$SOURCE_DATE_EPOCH})"

	go generate -v
	go build -v -ldflags "-s -w -extldflags \"$LDFLAGS\" \
			-X github.com/traefik/traefik/v3/pkg/version.Codename=cheddar \
			-X github.com/traefik/traefik/v3/pkg/version.Version=$pkgver \
			-X github.com/traefik/traefik/v3/pkg/version.BuildDate=$builddate" \
		-o bin/ ./cmd/$pkgname
}

check() {
	# skipping:
	# 	proxy/fast: fails on CI (maybe DNS: Failed to resolve destination 'backend.localhost')
	local filter="proxy/fast"

	# shellcheck disable=2046
	go test -timeout 30m -cover "-coverprofile=cover.out" \
		$(go list ./pkg/... ./cmd/... | grep -Ev "pkg/($filter)")
}

package() {
	install -Dm755 bin/$pkgname "$pkgdir"/usr/sbin/$pkgname
	install -Dm644 LICENSE.md -t "$pkgdir"/usr/share/licenses/$pkgname/
	install -dm775 -o $pkgname -g $pkgname "$pkgdir"/var/log/$pkgname
	install -dm750 -o $pkgname -g $pkgname "$pkgdir"/etc/$pkgname
	install -m644 -o $pkgname -g $pkgname "$srcdir"/traefik.yaml \
		-t "$pkgdir"/etc/$pkgname/

	install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
}

sha512sums="
cd76a221a0541274460c5db37dcdb1b7609d05e0e083b80aed087440a639c6214d6604c9362f1bbf9caa9f68a76ddec801f35793398a8ee92005b048f1e085cc  traefik-3.4.0.tar.gz
d5a64e46ebafebd1352fda2fae5c3b6ccb58d3191583b06efbba9eaf0b444d4a7b6743a347a13ad79ca207ddeda7ab8d7387ffd7d4f9160ec80b5f2521bf8808  traefik.initd
bbc0bb6825f8847ef0ee18b7194afc4e1443041727022e435e48249744b1230b3422ff9d20a6b42d2e3615e57c10254611fe1e999b847e7b4a4d5954bd677cf2  traefik.confd
1a0124b4b312dade4b8aacb6c73ac2898ff5d0e235b8cd1749d8a85a9ef9b383ad5ba6b334335dd3722b1653c6e40fa95690a0e50312f3a133e95704dd1fee36  traefik.yaml
f7fef762d7ff4cd0e34263389e1e2ffd1583c9c84c9ea029237ad85e0e669edbd3cb669483d3b9085d38c06abf7dcc6a4702c2a6fc3986ad1b6af4d0d507bfc6  logs_tests.patch
"
