#!/usr/bin/make -f

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

ESLINT = NO_COLOR=1 eslint
JEST = jest --color=false
MOCHA = NO_COLOR=1 mocha --no-timeout --no-color
# normalize output with TAP where possible unless terse requested
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
ESLINT += --format tap
MOCHA += --reporter tap
else
ESLINT += --format unix
MOCHA += --reporter dot
endif

JS_STEMS = sdp

%:
	dh $@

override_dh_auto_build: \
 $(addprefix debian/js/,$(addsuffix .min.js.gz,\
  $(JS_STEMS) $(addsuffix .esm,$(JS_STEMS))))

# build browser libraries
$(addprefix dist/,$(addsuffix .js,$(JS_STEMS))): dist/%.js: %.js
	mkdir --parents dist
	babeljs --no-babelrc --presets @babel/preset-env \
		--out-dir dist \
		-- $<

# collect transpiled ES5 modules
$(addprefix debian/js/,$(addsuffix .js,$(JS_STEMS))): debian/js/%: dist/%
	install -D --mode=0644 --target-directory debian/js \
		$(addprefix dist/,$(addsuffix .js,$(JS_STEMS)))

# collect source ES6 modules
$(addprefix debian/js/,$(addsuffix .esm.js,$(JS_STEMS))): debian/js/%.esm.js: dist/%.js
	mkdir --parents debian/js
	cp --force $< $@

# optimize JavaScript for browser use
# * include source-map
%.min.js: %.js
	uglifyjs --compress --mangle \
		--source-map "base='$(abspath $(dir $@))',url='$(notdir $@).map'" \
		--output $@ \
		-- $<

# pre-compress for browser use
%.gz: %
	pigz --force --keep -11 -- $<
	brotli --force --keep --best --suffix=.brotli -- $<

# build and run testsuite
# * wrap with perl TAP harness
# * check all testsuites
override_dh_auto_test:
#	cd Xh264 && $(ESLINT) -c .eslintrc.js index.js test
#	cd Xtransform && $(ESLINT) .
	$(ESLINT) sdp.js test/sdp.js
#	cd Xtransform && $(JEST)
	$(MOCHA) test/sdp.js

override_dh_gencontrol:
	dh_gencontrol -- \
		-V"sdp:Version=$(shell jq --raw-output .version < package.json)~$(DEB_VERSION)" \
		-V"transform:Version=$(shell jq --raw-output .version < Xtransform/package.json)~$(DEB_VERSION)" \
		-V"h264:Version=$(shell jq --raw-output .version < Xh264/package.json)~$(DEB_VERSION)"

.SECONDARY:
