#!/usr/bin/make -f

comma := ,
empty :=
space := $(empty) $(empty)

EXTERNAL = path-to-regexp,delegate-it,typed-query-selector,focus-options-polyfill
GLOBALS = path-to-regexp:pathToRegexp,delegate-it:delegateIt,typed-query-selector:typedQuerySelector,focus-options-polyfill:focusOptionsPolyfill,swup:swup,@swup/plugin:swupPlugin
MODULES = -p babel -p typescript -p json -p terser
PLUGINS = a11y-plugin progress-plugin
PLUGINVARS = a11y-plugin:swupA11yPlugin,progress-plugin:swupProgressPlugin
INDEX = src/index.ts

%:
	dh $@

override_dh_auto_configure:

override_dh_auto_build:
	mkdir -p node_modules/@swup
	# link external modules
	for p in $(subst $(comma),$(space),$(EXTERNAL)) ; do \
		ln -s /usr/share/nodejs/$$p node_modules/$$p ; \
	done
	# swup
	rollup $(MODULES) -e $(EXTERNAL) -g $(GLOBALS) -f cjs $(INDEX) -o dist/Swup.cjs -m
	rollup $(MODULES) -e $(EXTERNAL) -g $(GLOBALS) -f es $(INDEX) -o dist/Swup.module.js -m
	rollup -c rollup.modern.mjs $(MODULES) -e $(EXTERNAL) -g $(GLOBALS) -f es $(INDEX) -o dist/Swup.modern.js -m
	rollup $(MODULES) -e none -g $(GLOBALS) -f umd src/Swup.ts -o dist/Swup.umd.js -m -n swup
	ln -s ../dist node_modules/swup
	# @swup/plugin
	cd plugin && \
	rollup $(MODULES) -e $(EXTERNAL),swup -g $(GLOBALS) -f cjs $(INDEX) -o dist/index.cjs -m
	cd plugin && \
	rollup $(MODULES) -e $(EXTERNAL),swup -g $(GLOBALS) -f es $(INDEX) -o dist/index.module.js -m
	cd plugin && \
	rollup -c ../rollup.modern.mjs $(MODULES) -e $(EXTERNAL),swup -g $(GLOBALS) -f es $(INDEX) --o dist/index.modern.js -m
	cd plugin && \
	rollup $(MODULES) -e none -g $(GLOBALS) -f umd $(INDEX) -o dist/index.umd.js -m -n swupPlugin
	ln -s ../plugin/dist node_modules/@swup/plugin
	# plugins
	for p in $(PLUGINS) ; do \
		(cd $$p && \
		rollup $(MODULES) -e $(EXTERNAL),swup,@swup/plugin -g $(GLOBALS) -f cjs $(INDEX) -o dist/index.cjs -m) || \
		exit 1 ; \
	done
	for p in $(PLUGINS) ; do \
		(cd $$p && \
		rollup $(MODULES) -e $(EXTERNAL),swup,@swup/plugin -g $(GLOBALS) -f es $(INDEX) -o dist/index.module.js -m) || \
		exit 1 ; \
	done
	for p in $(PLUGINS) ; do \
		(cd $$p && \
		rollup -c ../rollup.modern.mjs $(MODULES) -e $(EXTERNAL),swup,@swup/plugin -g $(GLOBALS) -f es $(INDEX) -o dist/index.modern.js -m) || \
		exit 1 ; \
	done
	for p in $(PLUGINS) ; do \
		(cd $$p && \
		rollup $(MODULES) -e none -g $(GLOBALS) -f umd $(INDEX) -o dist/index.umd.js -m \
			-n $$(echo ",$(PLUGINVARS)," | sed -e "s/.*,$$p:\\([^,]*\\),.*/\\1/")) || \
		exit 1 ; \
	done

override_dh_auto_install:
	dh_auto_install --buildsystem=nodejs
	mv debian/node-swup/usr/share/nodejs/swup/node_modules/* debian/node-swup/usr/share/nodejs/
	rmdir debian/node-swup/usr/share/nodejs/swup/node_modules

override_dh_installchangelogs:
	dh_installchangelogs -X CHANGELOG.md

.PHONY: override_dh_auto_configure override_dh_auto_build \
	override_dh_auto_install override_dh_installchangelogs
