# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
setvar pkgname = 'artifactory-oss'
setvar _pkgname = 'artifactory'
setvar pkgver = '4.16.0'
setvar pkgrel = '0'
setvar pkgdesc = ""Open source Maven repository manager""
setvar url = ""https://www.jfrog.com/open-source/""
setvar arch = ""noarch""
setvar license = ""AGPL3""
setvar depends = ""jetty-runner openjdk8-jre-base""
setvar makedepends = ""unzip zip""
setvar install = ""$pkgname.pre-install $pkgname.post-install""
setvar pkgusers = ""artifact""
setvar pkggroups = ""artifact""
setvar source = ""https://jcenter.bintray.com/org/artifactory/oss/jfrog-$pkgname/$pkgver/jfrog-$pkgname-$pkgver.zip
	$_pkgname.confd""
setvar builddir = ""$srcdir/$pkgname-$pkgver""

proc prepare {
	default_prepare || return 1

	cd $builddir

	# Prepare default storage config (this is copied from Artifactory).
	cat > etc/storage.properties <<< '''
		type=derby
		url=jdbc:derby:{db.home};create=true
		driver=org.apache.derby.jdbc.EmbeddedDriver
'''

	# Allow to change logs directory using system property.
	sed -i 's|${artifactory.home}/logs|${artifactory.logs}|' \
		etc/logback.xml || return 1

	cd webapps

	# Remove tomcat-juli from WAR, it conflicts with Jetty's implementation.
	zip -d $_pkgname.war WEB-INF/lib/tomcat-juli-*.jar || return 1

	# Patch web.xml inside WAR; remove second declaration of
	# welcome-file-list that overwrites the previous correct one.
	unzip $_pkgname.war WEB-INF/web.xml || return 1
	patch -l WEB-INF/web.xml <<< """ || return 1
		@@ -159,8 +159,5 @@
		         <url-pattern>/ui/*</url-pattern>
		     </servlet-mapping>

		-    <welcome-file-list>
		-        <welcome-file>TC7-49422</welcome-file>
		-    </welcome-file-list>

		 </web-app>
"""
	zip -u $_pkgname.war WEB-INF/web.xml
}

proc package {
	local libdir="$pkgdir/var/lib/$_pkgname"

	cd $builddir

	install -m 644 -D webapps/$_pkgname.war \
		"$pkgdir"/usr/share/java/$_pkgname.war || return 1

	install -m 750 -o $pkgusers -g $pkggroups -d \
		$libdir "$libdir"/etc "$libdir"/data || return 1

	install -m 755 -o $pkgusers -g $pkggroups -d \
		"$pkgdir"/var/log/$_pkgname || return 1

	# Derby insists on logging into ./logs, so we must symlink it.
	ln -s /var/log/$_pkgname "$libdir"/logs || return 1

	local f
	for f in artifactory.system.properties mimetypes.xml storage.properties {
		install -m 644 -D etc/$f "$pkgdir"/etc/$_pkgname/$f || return 1
		ln -s /etc/$_pkgname/$f "$libdir"/etc/$f || return 1
	}

	# Fix permissions, this file may contain DB password.
	install -m 640 -o root -g $pkggroups etc/storage.properties \
		"$pkgdir"/etc/$_pkgname/storage.properties || return 1

	# Artifactory dumps settings from web admin interface, so keep it in
	# /usr/lib instead of /etc.
	install -m 600 -o $pkgusers -g $pkggroups \
		etc/artifactory.config.xml "$libdir"/etc/ || return 1

	# Artifactory doesn't like symlinked logback.xml, so we must keep it here.
	install -m 644 -o $pkgusers -g $pkggroups \
		etc/logback.xml "$libdir"/etc/ || return 1

	mkdir -p "$pkgdir"/etc/init.d
	ln -s jetty-runner "$pkgdir"/etc/init.d/$_pkgname || return 1

	install -m 644 -D "$srcdir"/$_pkgname.confd "$pkgdir"/etc/conf.d/$_pkgname
}

setvar sha512sums = ""ce7c65ef9afde2aab3c0cc8b4c9e6a069483f101dccb475a8bd3a851c88dd96c3154c2ff1202139aee6f14efbb4d17477dcdd54f2360caddc5d888c657e3b16d  jfrog-artifactory-oss-4.16.0.zip
2701ea102da77b86be3b9aa75d5aa92fd5d81081ae1c835aaea49b0f0fd015bd5b32128ba913afda10fac122eec2d0bd1e203af4ee3d13106c3e66e7d1b83498  artifactory.confd""