# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Contributor: Patrycja Rosa <alpine@ptrcnull.me>
# Maintainer: Will Sinatra <wpsinatra@gmail.com>
maintainer="Will Sinatra <wpsinatra@gmail.com>"
pkgname=woodpecker
pkgver=3.6.0
pkgrel=0
pkgdesc="Simple yet powerful CI/CD engine with great extensibility"
url="https://woodpecker-ci.org"
arch="all"
license="Apache-2.0"
pkgusers="woodpecker"
pkggroups="woodpecker"
makedepends="
	go
	go-swag
	sqlite-dev
	pnpm
	"
subpackages="
	$pkgname-agent
	$pkgname-agent-openrc:agent_openrc
	$pkgname-cli
	$pkgname-doc
	$pkgname-openrc
	"
install="$pkgname.pre-install"
source="$pkgname-$pkgver.tar.gz::https://github.com/woodpecker-ci/woodpecker/releases/download/v$pkgver/woodpecker-src.tar.gz
	woodpecker-server.initd
	woodpecker-agent.initd
	woodpecker-server.conf
	woodpecker-agent.conf
	woodpecker-agent-state.conf
	woodpecker-server.logrotate
	woodpecker-agent.logrotate
	respect-cgo-flags.patch
	disable-race-tests.patch
	disable-ui-openai-generation.patch
	"
options="net"

export GOFLAGS="$GOFLAGS -tags=libsqlite3"
export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
export GOMODCACHE="${GOMODCACHE:-"$srcdir/go"}"

unpack() {
	mkdir -p $builddir
	tar -xzvf $srcdir/$pkgname-$pkgver.tar.gz -C $builddir
}

build() {
	export TARGETARCH="$(go env GOHOSTARCH)"
	make build -j1 STATIC_BUILD=false
	make docs
}

check() {
	make test
}

package() {
	# Install server
	install -Dm755 "$builddir"/dist/woodpecker-server \
		"$pkgdir"/usr/bin/woodpecker-server

	# Install initd & conf
	install -Dm755 "$srcdir"/woodpecker-server.initd \
		"$pkgdir"/etc/init.d/woodpecker-server
	install -Dm640 -o woodpecker -g woodpecker "$srcdir"/woodpecker-server.conf \
		"$pkgdir"/etc/woodpecker/server.conf

	# Install web resources
	install -d -m 755 -o woodpecker -g woodpecker "$pkgdir"/usr/share/webapps/$pkgname
	cp -R "$builddir"/web/dist/* "$pkgdir"/usr/share/webapps/$pkgname/

	# Create empty log & lib directories
	install -d -m0750 -o woodpecker -g woodpecker \
		"$pkgdir"/var/log/woodpecker "$pkgdir"/var/lib/woodpecker

	# Install logrotate rules
	install -Dm644 "$srcdir"/woodpecker-server.logrotate \
		"$pkgdir"/etc/logrotate.d/woodpecker-server

	# Install mandocs
	mkdir -p "$pkgdir"/usr/share/doc/$pkgname
	cp -R "$builddir"/docs/docs/* "$pkgdir"/usr/share/doc/$pkgname/
}

cli() {
	pkgdesc="Woodpecker Server CLI"

	install -Dm755 "$builddir"/dist/woodpecker-cli \
		"$subpkgdir"/usr/bin/woodpecker-cli
}

agent() {
	pkgdesc="Woodpecker CI agent"

	install -Dm755 "$builddir"/dist/woodpecker-agent \
		"$subpkgdir"/usr/bin/woodpecker-agent

	# This is the agent's configuration
	install -Dm640 -o woodpecker -g woodpecker "$srcdir"/woodpecker-agent.conf \
		"$subpkgdir"/etc/woodpecker/agent.conf

	# This holds configuration state from the Woodpecker Server component
	install -Dm640 -o woodpecker -g woodpecker "$srcdir"/woodpecker-agent-state.conf \
		"$subpkgdir"/etc/woodpecker/agent-state.conf

	# Install logrotate rules
	install -Dm644 "$srcdir"/woodpecker-agent.logrotate \
		"$pkgdir"/etc/logrotate.d/woodpecker-agent

	# Create empty log & lib directories
	install -d -m0750 -o woodpecker -g woodpecker \
		"$subpkgdir"/var/log/woodpecker "$subpkgdir"/var/lib/woodpecker
		
}

agent_openrc() {
	pkgdesc="Woodpecker CI agent (OpenRC init scripts)"
	depends=openrc
	install_if="openrc $pkgname-agent=$pkgver-r$pkgrel"

	install -Dm755 "$srcdir"/woodpecker-agent.initd \
		"$subpkgdir"/etc/init.d/woodpecker-agent
}

sha512sums="
c51b56592247b0d6867e027d52a7a775932c14817ded59fc49a80a19e98c6dafaa82f367b8df32547b4baf471a9e78f6e9e95565f8986a4b853e97fd900e7253  woodpecker-3.6.0.tar.gz
78ab8bb18039dd9f754e6561dd9b439642c2dbf897bcd24e6cd1f4473e0aec51ed7a0b1bf37c3ccb57144542ff3db83775ce7254ba9b53c306a653c4dc1a0d5f  woodpecker-server.initd
5f2f9357fd4f4f5a71e65a33992b41ef329b93fc25bffcc304590638bc9bbb95eeef9e8922753ebd7b0aa87bf1dc14c12ca2106563fd585076bb1c6e42aed773  woodpecker-agent.initd
b6c317731c8ae10376019ab0bba7313ddb1b6c495f214de60e58be11c1303245a6c9caf84c3c3ed6290908acc8b6c4d3305f16d72ca66e0349b0c4db7c4d8166  woodpecker-server.conf
c4c6af1bb4f85fa9e21ea0d7d4ac5aeddce001d15ea32c98b3bb9a04285903b65d928d1aa5211c32a53268be1d09d57723c03bd86fcebd04acc69c66c8a0c234  woodpecker-agent.conf
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  woodpecker-agent-state.conf
e6fbecc95f9e0be9f3c0410492e58167e6aa2a7c47a02446585484cb8f506a6e84ea61f35e656dd335ad9bd297a3dd842b1333bdc8f3581786b3e67029fe7a44  woodpecker-server.logrotate
e6fbecc95f9e0be9f3c0410492e58167e6aa2a7c47a02446585484cb8f506a6e84ea61f35e656dd335ad9bd297a3dd842b1333bdc8f3581786b3e67029fe7a44  woodpecker-agent.logrotate
b94cf203806faefba45e01f6ada508ec4c726268a0512b62b6d47451ecef7953316f59a43029c3047f56edf740e26c440a96fd4a9d0c0371215d87bc1fb2919b  respect-cgo-flags.patch
a7c55de3fd4b293d3e625f59f3fc2427507736670852a0a52104d029dd77ca9a4b201f387d403436cf23d3b0a624c2f4e86ca1cf9c0b0c126b18e979096b8758  disable-race-tests.patch
eb4a489d4700758b496f9bbe87fe344afe93c3095111cf6bc66c867f1b24c173776327804d363fa3acebefde4d0b34e953286ca8a124a4fefcf90a0e1b6d2db2  disable-ui-openai-generation.patch
"
