# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5
USE_RUBY="ruby19 ruby20"
inherit eutils ruby-ng user versionator

RPV=${PV}
RP=${P}

DESCRIPTION="PuppetDB stores data generated by Puppet for Inventory and Exported Resources"
HOMEPAGE="http://puppetlabs.com/"
SRC_URI="https://github.com/puppetlabs/puppetdb/archive/${RPV}.tar.gz"

LICENSE="Apache-2.0 GPL-2"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="+terminus"

DEPEND="${DEPEND}
	ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] ) 
	ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) 
	=dev-lang/leiningen-2.5.0
	=dev-lang/clojure-1.6
	dev-ruby/rake
	>=dev-ruby/facter-1.6.2
	dev-java/java-config
	>=virtual/jdk-1.6.0"
RDEPEND="${RDEPEND}
	ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] ) 
	ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) 
	=dev-lang/clojure-1.6
	dev-ruby/rake
	>=dev-ruby/facter-1.6.2
	dev-java/java-config
	>=virtual/jdk-1.6.0"

SITEFILE="50${PN}-mode-gentoo.el"

PUPPETDB_DIR="/var/lib/${PN}"
PUPPETDB_USER="${PN}"
PUPPETDB_GROUP="${PN}"

RUBY_PATCHES=( "${P}-gentoo.patch" )

pkg_setup() {
        enewgroup "${PUPPETDB_GROUP}"
        # home directory is required for SCM.
        enewuser "${PUPPETDB_USER}" -1 -1 "${PUPPETDB_DIR}" "${PUPPETDB_USER}"
}

each_ruby_prepare() {
        echo ${PV} > version
}

each_ruby_compile() {
        export LEIN_ROOT="ignore"
        export CLASSPATH=/usr/share/clojure-1.6/lib/clojure.jar:/usr/share/java/leiningen-2.5.0-standalone.jar
        # bootstrap as per http://projects.puppetlabs.com/issues/21547
        /usr/bin/rake package:bootstrap
        /usr/bin/rake DESTDIR="${D}" USER='root' || die "Compilation failed"
}

each_ruby_install() {
        export LEIN_ROOT="ignore"
        export CLASSPATH='/usr/share/clojure-1.6/lib/clojure.jar:/usr/share/java/leiningen-2.5.0-standalone.jar'
        /usr/bin/rake install DESTDIR="${D}" || die "Install failed"
        mkdir ${D}/etc/conf.d
        cp ${FILESDIR}/puppetdb.confd ${D}/etc/conf.d/puppetdb || die "Install init script failed"
        cp ${FILESDIR}/puppetdb.initd ${D}/etc/init.d/puppetdb || die "Install init script failed"
        fowners ${PUPPETDB_USER}:${PUPPETDB_GROUP} \
            /etc/puppetdb/{,logback.xml} \
            /etc/puppetdb/conf.d/{,config.ini,database.ini,jetty.ini,repl.ini} \
            /var/lib/puppetdb/{,db,mq,state}
        fperms 0750 \
            /etc/puppetdb/{,conf.d} \
            /var/lib/puppetdb/{,db,mq,state}
        fperms 0640 \
            /etc/puppetdb/logback.xml \
            /etc/puppetdb/conf.d/config.ini \
            /etc/puppetdb/conf.d/database.ini \
            /etc/puppetdb/conf.d/jetty.ini \
            /etc/puppetdb/conf.d/repl.ini
 
        if use terminus; then
        	doruby -r puppet/lib/puppet
        fi
}