# Contributor: Will Sinatra <wpsinatra@gmail.com>
# Maintainer: Will Sinatra <wpsinatra@gmail.com>
pkgname=grocy
pkgver=4.5.0
pkgrel=0
pkgdesc="web-based self-hosted groceries & household management solution for your home"
url="https://grocy.info/"
license="MIT"
arch="noarch"
_php=php83
makedepends="composer yarn $_php-dev $_php-sqlite3 $_php-gd $_php-intl"
depends="$_php
	$_php-fpm
	$_php-ctype
	$_php-fileinfo
	$_php-gd
	$_php-iconv
	$_php-intl
	$_php-mbstring
	$_php-pdo_sqlite
	$_php-simplexml
	$_php-sqlite3
	$_php-tokenizer
	$_php-phar
	$_php-openssl
	sqlite
	"
source="$pkgname-$pkgver.zip::https://github.com/grocy/grocy/releases/download/v$pkgver/grocy_$pkgver.zip
	$pkgname-$pkgver.tar.gz::https://github.com/grocy/grocy/archive/refs/tags/v$pkgver.tar.gz
	grocy_nginx.conf
	grocy_nginx_fpm.conf"
options="!check" # no checks defined
subpackages="$pkgname-nginx:_nginx"

unpack() {
	#Web application is pre-packaged
	#Default unpack dumps this directly into the srcdir
	unzip $srcdir/$pkgname-$pkgver.zip -d $srcdir/$pkgname-$pkgver

	#But the web application lacks yarn & composer files to build with
	#so we pull and extract both
	mkdir $srcdir/source
	tar -xzvf $srcdir/$pkgname-$pkgver.tar.gz -C $srcdir/source
}

prepare() {
	default_prepare

	#Pull yarn & composer files from tarball, and insert into webapp directory
	for f in yarn.lock composer.lock composer.json composer.lock package.json; do
		cp $srcdir/source/$pkgname-$pkgver/$f $srcdir/$pkgname-$pkgver/
	done
}

build() {
	$_php /usr/bin/composer.phar dump-autoload --no-cache --no-interaction --no-dev --optimize

	yarn install --frozen-lockfile --modules-folder public/node_modules --production
	yarn cache clean
}

package() {
	_instdir="$pkgdir"/usr/share/webapps/grocy
	mkdir -p "$_instdir" "$pkgdir"/etc/webapps/grocy "$pkgdir"/var/lib/webapps

	cp -r "$builddir"/* "$_instdir"
	mv "$pkgdir"/usr/share/webapps/grocy/data "$pkgdir"/var/lib/webapps/grocy

	ln -s /var/lib/webapps/grocy "$pkgdir"/usr/share/webapps/grocy/data
	ln -s /etc/webapps/grocy/config.php "$pkgdir"/var/lib/webapps/grocy/config.php

	mv "$builddir"/config-dist.php "$pkgdir"/etc/webapps/grocy/config.php

	chown -R root:www-data "$pkgdir"/usr/share/webapps/grocy
	chown -R root:www-data "$pkgdir"/var/lib/webapps/grocy
	chmod -R 0775 "$pkgdir"/var/lib/webapps/grocy
}

_nginx() {
	pkgdesc="Nginx configuration for Grocy"
	depends="nginx !grocy-lighttpd"
	install="$subpkgname".pre-install

	install -d "$subpkgdir"/etc/nginx/sites-available
	install -d "$subpkgdir"/etc/$_php/conf-available
	install -Dm0644 "$srcdir"/grocy_nginx.conf -t "$subpkgdir"/etc/nginx/sites-available
	install -Dm0644 "$srcdir"/grocy_nginx_fpm.conf -t "$subpkgdir"/etc/$_php/conf-available
}

sha512sums="
3166dcf8f80a69d33a1c2208fb4bc5113d218cc7eeaf70e20d85fa671b0dbd1f25e355c46664b37fd21011a673e77dea1c09fe5624e0ed40c7de5e857801ec32  grocy-4.5.0.zip
31f1caac8c8d50367a65b3e1be994433a60439bc32fbf1fc6814b03ff1d793780029d1e3c411210d663d4fb67946ff5b6ac6e6d44c511022d2d86397a81c7963  grocy-4.5.0.tar.gz
20f698a7b634ef6390f31275f2c0f8ca645e626521cb252c5c248c33616bd744ec0270f62bd7ffb3b56220dc37829ec8cc2692789ea1efffad8ba098e4c5caae  grocy_nginx.conf
707cb5c9837d75f6506b390207e544456d75fc2851791060261286d4cfa9534a785b84f26769d8d706e045a0f0cd1a0f3a30dcd3468b7c77ab237492580dc151  grocy_nginx_fpm.conf
"
