#!/usr/bin/make -f

SHELL := /bin/bash

include /usr/share/dpkg/pkg-info.mk

export DEB_DH_CLJ_LEIN_CREATE_MAVEN_REPO := $(CURDIR)/create-test-maven-repo

pages := dh-clojure-lein.7 dh-clojure.7

pf := set -o pipefail

define deb_sub
  perl -p \
    -e "s|\@DEB_VERSION\@|$(DEB_VERSION)|go;"
endef

define create_page
  pod2man \
    -n $(basename $@) \
    -c 'Debhelper Clojure tools' \
    -r '$(DEB_VERSION)' \
    -s $(patsubst .%,%,$(suffix $@)) \
    $< $@
endef

deb_lein := LEIN_OFFLINE=true
deb_lein += LEIN_HOME=$(CURDIR)/debian/lein-home
deb_lein += /usr/bin/lein update-in : assoc :local-repo '"/usr/share/maven-repo"' --

dh_clj_lein_ver != $(pf); cd dh-clojure-lein \
  && $(deb_lein) update-in :version println -- version | head -1

ifneq "0" "$(.SHELLSTATUS)"
  $(error "Unable to determine dh-clojure-lein version (.SHELLSTATUS $(.SHELLSTATUS))")
endif

%:
	dh $@

%.7: %.7.pod; $(create_page)

override_dh_auto_build: $(pages)
	cd dh-clojure-lein && $(deb_lein) pom ../debian/dh-clojure-lein-pom.xml
	cd dh-clojure-lein && $(deb_lein) jar

execute_after_dh_auto_install:
	echo debian/dh-clojure-lein-pom.xml \
	  --artifact=dh-clojure-lein/target/dh-clojure-lein-$(dh_clj_lein_ver).jar \
	  --usj-name=dh-clojure-lein \
	  --java-lib > debian/dh-clojure.poms
	mh_install
	mh_resolve_dependencies --non-interactive --offline --build -pdh-clojure --non-explore

ex_env = DEB_DH_CLJ_LEIN_OVERRIDE_JAR=$(CURDIR)/dh-clojure-lein/target/dh-clojure-lein-debian.jar
ex_env += PERLLIB=$(CURDIR)/lib

override_dh_auto_test:
  ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	cd dh-clojure-lein && $(deb_lein) test
	cd example-clojure && $(ex_env) debian/rules clean
	cd example-clojure && $(ex_env) debian/rules binary
	test -f libexample-clojure_0.1.0_all.deb
	dpkg-deb -c libexample-clojure_0.1.0_all.deb | grep -Fq \
		-e './usr/share/java/example.jar' \
		-e './usr/share/java/example-test.jar' \
		-e './usr/share/maven-repo/example/example/0.1.0-SNAPSHOT/example-0.1.0-SNAPSHOT.pom' \
		-e './usr/share/maven-repo/example/example/0.1.0-SNAPSHOT/example-0.1.0-SNAPSHOT.jar' \
		-e './usr/share/maven-repo/example/example/0.1.0-SNAPSHOT/example-test-0.1.0-SNAPSHOT.jar' \
		-e './usr/share/maven-repo/example/example/debian/example-debian.pom' \
		-e './usr/share/maven-repo/example/example/debian/example-test-debian.jar'
	dpkg-deb --info libexample-clojure_0.1.0_all.deb | grep -F Depends: | grep -q libclojure-java
  endif

override_dh_clean:
	cd example-clojure && $(ex_env) debian/rules clean
	cd dh-clojure-lein && $(deb_lein) clean
        # dh-clojure-lein/pom.xml via create-test-maven-repo lein install
	dh_clean \
	  $(pages) \
	  .debianVersion \
	  debian/dh-clojure-lein-pom.xml \
	  debian/dh-clojure-lein-pom.xml.save \
	  debian/dh-clojure.poms \
	  debian/lein-home/ \
	  dh-clojure-lein/.lein-failures \
	  dh-clojure-lein/pom.xml \
	  libexample-*.deb
