# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
setvar pkgname = 'nextcloud'
setvar pkgver = '12.0.3'
setvar pkgrel = '0'
setvar pkgdesc = ""A safe home for all your data""
setvar url = ""http://nextcloud.com""
setvar arch = ""noarch""
setvar license = ""AGPL""
setvar _php = 'php7'
setvar _php_mods = ""-ctype -curl -dom -gd -fileinfo -iconv -json -mbstring -openssl
	-posix -session -simplexml -xml -xmlreader -xmlwriter -zlib -zip""
setvar depends = ""ca-certificates $_php ${_php_mods//-/$_php-}""
setvar makedepends = ""xmlstarlet""
setvar provides = ""$pkgname-dav=$pkgver-r$pkgrel
	$pkgname-files=$pkgver-r$pkgrel
	$pkgname-provisioning_api=$pkgver-r$pkgrel""
setvar install = ""$pkgname.pre-install $pkgname.pre-upgrade $pkgname.post-upgrade""
setvar subpackages = ""$pkgname-doc $pkgname-initscript $pkgname-mysql $pkgname-pgsql $pkgname-sqlite
	$pkgname-default-apps:_default_apps""
setvar source = ""https://download.nextcloud.com/server/releases/$pkgname-$pkgver.zip
	nextcloud10-dont-chmod-config.patch
	dont-update-htaccess.patch
	disable-integrity-check-as-default.patch
	app-encryption-info-add-mcrypt.patch
	iconv-ascii-translit-not-supported.patch
	use-external-docs-if-local-not-avail.patch
	nextcloud-1202-fix-6028.patch
	$pkgname-config.php
	$pkgname.logrotate
	$pkgname.confd
	$pkgname.cron
	fpm-pool.conf""
setvar options = ""!check""
setvar pkgusers = ""nextcloud""
setvar pkggroups = ""www-data""
setvar builddir = ""$srcdir"/$pkgname"

# List of bundled apps to separate into subpackages. Keep it in sync!
# Note: Don't add "files", "dav", and "provisioning_api" here, these should
# be always installed.
setvar _apps = ""activity
	admin_audit
	comments
	encryption
	federatedfilesharing
	federation
	files_external
	files_pdfviewer
	files_sharing
	files_texteditor
	files_trashbin
	files_versions
	files_videoplayer
	firstrunwizard
	gallery
	logreader
	lookup_server_connector
	nextcloud_announcements
	notifications
	oauth2
	password_policy
	serverinfo
	sharebymail
	survey_client
	systemtags
	theming
	twofactor_backupcodes
	user_external
	user_ldap
	workflowengine
	""
for _i in $_apps {
	setvar subpackages = ""$subpackages $pkgname-$_i:_package_app""
}

# Directory for apps shipped with Nextcloud.
setvar _appsdir = ""usr/share/webapps/$pkgname/apps""

proc package {
	local basedir="var/lib/$pkgname"
	local datadir="$basedir/data"
	local wwwdir="usr/share/webapps/$pkgname"
	local confdir="etc/$pkgname"

	mkdir -p $pkgdir
	cd $pkgdir

	mkdir -p ./${wwwdir%/*}
	cp -a $builddir ./$wwwdir

	chmod +x ./$wwwdir/occ
	chmod 664 ./$wwwdir/.htaccess \
		./$wwwdir/.user.ini

	# Let's not ship upstream's 'updatenotification' app and updater, which
	# has zero chance of working and a big chance of blowing things up.
	rm -r ./$wwwdir/apps/updatenotification \
		./$wwwdir/updater

	# Replace bundled CA bundle with ours.
	ln -sf /etc/ssl/certs/ca-certificates.crt ./$wwwdir/resources/config/ca-bundle.crt

	install -d -m 770 -o nextcloud -g www-data \
		./$confdir ./$datadir ./$basedir/apps
	install -d -m 775 -o nextcloud -g www-data \
		./var/log/$pkgname

	# Create symlink from web root to site-apps, so web server can find
	# assets w/o explicit configuration for this layout.
	ln -s /$basedir/apps ./$wwwdir/apps-appstore

	mv ./$wwwdir/config/* ./$confdir/
	rm -r ./$wwwdir/config
	ln -s /$confdir ./$wwwdir/config

	mkdir -p ./usr/share/doc/$pkgname
	mv ./$wwwdir/core/doc ./usr/share/doc/$pkgname/core

	install -m 660 -o nextcloud -g www-data \
		"$srcdir"/$pkgname-config.php ./$confdir/config.php

	install -m 644 -D "$srcdir"/$pkgname.logrotate ./etc/logrotate.d/$pkgname


	# Clean some unnecessary files.
	find . -name .gitignore -delete \
		-o -name .bower.json -delete \
		-o -name 'README*' -delete \
		-o -name 'CHANGELOG*' -delete \
		-o -name 'CONTRIBUTING*' -delete
	find . -name .github -type d -prune -exec rm -r {} ';'
}

proc doc {
	default_doc

	local target="$subpkgdir"/usr/share/webapps/$pkgname/core/doc
	mkdir -p ${target%/*}
	ln -s ../../../doc/$pkgname/core $target
}

proc initscript {
	setvar pkgdesc = ""Init script that runs Nextcloud with php-fpm""
	setvar depends = ""$pkgname $_php-fpm""
	setvar install = ""$subpkgname.post-install""

	local confdir="$subpkgdir/etc/$_php/php-fpm.d"
	local fpm_name="php-fpm${_php#php}"

	install -m 644 -D "$srcdir"/fpm-pool.conf "$confdir"/$pkgname.conf
	install -m 644 -D "$srcdir"/$pkgname.confd "$subpkgdir"/etc/conf.d/$pkgname
	install -m 755 -D "$srcdir"/$pkgname.cron "$subpkgdir"/etc/periodic/15min/$pkgname

	mkdir -p "$subpkgdir"/etc/init.d
	ln -s $fpm_name "$subpkgdir"/etc/init.d/$pkgname

	install -m 700 -o nextcloud -d "$subpkgdir"/var/tmp/$pkgname
}

proc pgsql {
	setvar pkgdesc = ""Nextcloud PostgreSQL support""
	setvar depends = ""$pkgname $_php-pgsql $_php-pdo_pgsql""
	mkdir -p $subpkgdir
}

proc sqlite {
	setvar pkgdesc = ""Nextcloud SQLite support""
	setvar depends = ""$pkgname $_php-sqlite3 $_php-pdo_sqlite""
	mkdir -p $subpkgdir
}

proc mysql {
	setvar pkgdesc = ""Nextcloud MySQL support""
	setvar depends = ""$pkgname $_php-pdo_mysql""
	mkdir -p $subpkgdir
}

proc _default_apps {
	setvar pkgdesc = ""Nextcloud default apps""
	setvar depends = "$pkgname"

	local path; for path in "$pkgdir"/$_appsdir/* {
		if grep -q '<default_enable\s*/>' "$path"/appinfo/info.xml {
			setvar depends = ""$depends $pkgname-${path##*/}""
		}
	}

	mkdir -p $subpkgdir
}

proc _package_app {
	local appname="${subpkgname#$pkgname-}"
	local appinfo="$pkgdir/$_appsdir/$appname/appinfo/info.xml"

	local name=$(xmlstarlet sel -t -v 'info/name/text()' "$appinfo")
	setvar pkgdesc = ""Nextcloud ${name:-$appname} app""

	local php_deps=$(xmlstarlet sel -t -v 'info/dependencies/lib/text()' "$appinfo" \
		| xargs -r -n1 printf "$_php-%s\n")
	local app_deps=""

	case (appname) {
		files_sharing { setvar app_deps = ""-federatedfilesharing""}

		# XXX: Provides/replaces for backward compatibility with <12.0.0-r2.
		files_pdfviewer | files_texteditor | files_videoplayer {
			setvar provides = ""$pkgname-${appname#files_}""
			setvar replaces = "$provides"
		}
		user_ldap {
			setvar provides = ""$pkgname-ldap""
			setvar replaces = "$provides"
		}
	}

	setvar depends = ""$pkgname $php_deps ${app_deps//-/$pkgname-}""

	mkdir -p "$subpkgdir"/$_appsdir
	mv "$pkgdir"/$_appsdir/$appname "$subpkgdir"/$_appsdir/
}

setvar sha512sums = ""f13f0810b1755abdcac8c72e69417baeebd759943afb6743530a136b440ac9bebded8dae282450056c0613f5982b15f41aefba3b766ebb5eaea3d3a0e82710cc  nextcloud-12.0.3.zip
a12a73a38bc009d3307ce97bb32fc62ac93e125a77a3d36b31c9d2212953fa17bd5c31f819e0759a0645b1c285817b067143b0b9c3673ce4ab3043fae426a67c  nextcloud10-dont-chmod-config.patch
ec3921d4d463ed82be0be073af8064048a20f638424d1d39ab46db4252036e87ef2614570be91a5cef0c25c6bcaaf1a2725d2468bdb4a0fbee2b504a4dd0fbc8  dont-update-htaccess.patch
04783385ca35be9e8b895e91294b082cd2a1f50c4e17dc195901885ecd421db9a6fe45360d7eac623873ae4efad80b92f31ebde59f4ed76d832c8cac450dac85  disable-integrity-check-as-default.patch
8d3cb1436aa79f1ac0a7b4b3370fcfb5c50dbe811e631cabcb8170fb80da5967a88a15bc39cd04eaccffb3177bdf90fcba2a512e28e034e16d6bc9b445d2d137  app-encryption-info-add-mcrypt.patch
9bd1cdb73928d8e746286a8ededf79262835caee8fdb4a18e117535ed95784b5a0b04fad55c720084dd8ae1ed4fe123be55b41d3100c9bb0333af485084bc4b1  iconv-ascii-translit-not-supported.patch
478f5cd7c5d30380ea619d3e8ec623217a06a09b27534266f00297545c7d276b068c5d984673eebc5676e8bac7f45112549498944ce3fa678ac8a69541d7c430  use-external-docs-if-local-not-avail.patch
4c1de3c056473371a2288b9956ce1ecfe9eeb54e0561b7458c0cc38dbcf4ac2613dfe1fcea64715251b037a48eb1d7d29f32542fcea43c8ca1499db9b9f07cf3  nextcloud-1202-fix-6028.patch
89c941e2719629ee633421c4c75b55026c1a0a6b255e7f1f2c14612c10325045051b16dc5f17975af4a2a34ec187008de2eb15a53ac4cd06d26a5cbbd79fb73a  nextcloud-config.php
f224d72799ee5819979089eb58978225454223bee597c938681a4f6279eb49297fe9250ac54ccf8bcb33ae262bce43d085affb77723492ee662263710d4008c9  nextcloud.logrotate
35cf156839215113b5d8fb8842b4c1e19a50be3c16be7048879fdd808674e4875dbacf3e2dd884fd182258595b7a137d7d3c2dc602a7ff5613c8b65fae0abe67  nextcloud.confd
edb699ea6127b231793254115b334006c2d50a0d2ecc846188c3521ddffc3c0e19c5e2944f03cae81e6c645c859258380691081b1c522a22d40939b31db36e8a  nextcloud.cron
ebe88e451de5dc84ee8bbcd9af48e2ceae4807546b9c069cf15ecc73e2c408a6e8c7502870f7b45a2e5e0632fc7dec878cad24c1d3a20ff3b812067dd7b07de8  fpm-pool.conf""