#                MMMMMM
#           OMMMMMMMMMMM MM
#         MMM    MMMMM       MM
#       MM                     MM
#      MM                        M
#    MMM  MMMMMMMMMM  MMMMMMMMMM  MM
#    MM MMMMMMMMMMMMMM MMMMMMMMMMM M
#   MMM MM         MMMM        MMMM M
#   MMM M MMMMMM  M, MMM         MMM
#   MMM  M   MM MMMM  MMM MMMMMMMM
#   MMMM      MMMMM   8 MMMMMMMMMMMM
#    MMMMMMMMMMMM     MMMMM      MMMM
#    M MMMMMMMM  MMM MMMM MMMMMM  MMM
#   D,MMN        OMMM M   MMMMM MM,MM
#     MMMM8       MMMM8       8MMMMMM
#    M DMMMMMMMMMM$+MMMMMMMMMMMMM MM?
#     M= MMMMMMMMMM   MMMMMMMMM  MMM
#      M                        MMM
#       MM                     MM
#          MM       MMMM    MMM
#              MM MMMMMMMMMM
#                  MMMMM
#
#         ** auryn makefile **
#
# issues : https://github.com/aurynjs/auryn/issues
#

curdir := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))


# This generated line will work for you.
#
# If you're about to share this project,
# You should change it to :
#
# auryn_cli := $(shell which auryn)
#
# -> after making sure auryn is in your path

auryn_cli := {{aurynClientPath}}

# Functions

conf = $(shell ${auryn_cli} config get $1 -p ${curdir})

# Engine parameters

auryn_engine_path := $(call conf,auryn.engine.path)

# Project parameters

project_appid := $(call conf,project.appid)
project_dockdir := $(call conf,project.dockdir)
project_name := $(call conf,project.name)
project_main := $(call conf,project.main)

# Android parameters

droid_home := $(call conf,android.home)
droid_bin_android := $(call conf,android.bin.android)
droid_target := $(call conf,android.target)

droid_templatedir := $(call conf,android.templatedir)
droid_templates := $(shell ls ${droid_templatedir}/*.java.hbs)
droid_sources_names := $(foreach t,${droid_templates},$(notdir $(subst java.hbs,java,$(t))))
droid_dock_sourcesdir := ${project_dockdir}/android/src/$(subst .,/,${project_appid})
droid_dock_sources := $(foreach n,${droid_sources_names},${droid_dock_sourcesdir}/$(n))


droid_libsdir := $(call conf,android.libsdir)


# Java parameters

ant_bin := $(call conf,ant.bin)
java_home := $(call conf,java.home)

# Utils

xed_bin := $(call conf,xed.bin)

all:
	@echo ${droid_libsdir}

clean:
	@JAVA_HOME=${java_home} ANDROID_HOME=${droid_home} ${ant_bin} -q -f ${project_dockdir}/android/build.xml clean -Dsdk.dir=${droid_home}

distclean:
	@rm -rf ${project_dockdir}

android-debug: android-dock
	@JAVA_HOME=${java_home} ANDROID_HOME=${droid_home} ${ant_bin} -q -f ${project_dockdir}/android/build.xml debug -Dsdk.dir=${droid_home}

android-release: android-dock
	@JAVA_HOME=${java_home} ANDROID_HOME=${droid_home} ${ant_bin} -q -f ${project_dockdir}/android/build.xml release -Dsdk.dir=${droid_home}

android-dock: ${project_dockdir}/android \
	            ${project_dockdir}/android/libs \
              ${droid_dock_sources} \
              ${project_dockdir}/android/assets

${project_dockdir}/android/libs:
	@mkdir -p ${project_dockdir}/android/libs
	@rsync -ru ${droid_libsdir}/* ${project_dockdir}/android/libs/ 

${project_dockdir}/android/src/%.java:
	@mkdir -p $(dir $@)
	@${auryn_cli} render android/$(notdir $@).hbs $@ -p ${curdir}

${project_dockdir}/android/assets:
	@mkdir -p ${project_dockdir}/android/assets
	@cp ${project_main} ${project_dockdir}/android/assets/index.js

${project_dockdir}/android:
	@${droid_bin_android} -s create project \
		--target ${droid_target} \
		--name ${project_name} \
		--path ${project_dockdir}/android \
		--activity AurynMainActivity \
		--package ${project_appid}
	@rm -rf ${project_dockdir}/android/src/*
	@rm -rf ${project_dockdir}/android/libs