.PHONY: build install clean

# This is what Google and Mozilla wants us to upload when we release a new version to the Addon "store"
build: install
	npm run build
	make aw-watcher-web.zip

install:
	npm ci
	(cd aw-client-js; npm ci; npm run compile)

update:
	npm run build

clean:
	rm -rf node_modules build
	(cd aw-client-js; rm -rf node_modules)

aw-watcher-web.zip: out/app.js
	rm -f $@
	zip -r -FS $@ manifest.json static/ out/ media/logo/logo-128.png media/banners/banner.png

# To build a source archive, wanted by Mozilla reviewers. Include media subdir.
srczip:
	rm -rfv build
	mkdir -p build
	# archive the main repo
	git archive --prefix=aw-watcher-web/ -o build/aw-watcher-web.zip HEAD
	# archive the media subrepo
	(cd media/ && git archive --prefix=aw-watcher-web/media/ -o ../build/media.zip HEAD)
	(cd aw-client-js/ && git archive --prefix=aw-watcher-web/aw-client-js/ -o ../build/aw-client-js.zip HEAD)
	# extract the archives into a single directory
	(cd build && unzip -q aw-watcher-web.zip)
	(cd build && unzip -q aw-client-js.zip)
	(cd build && unzip -q media.zip)
	# zip the whole thing
	(cd build/aw-watcher-web && zip -r ../aw-watcher-web.zip *)
	# clean up
	(cd build && rm media.zip)

# Tests reproducibility of the build from srczip
test-build-srczip: srczip build
	(cd build/aw-watcher-web && make build)
	@# check that aw-watcher-web.zip have the same size
	@wc -c aw-watcher-web.zip build/aw-watcher-web/aw-watcher-web.zip | \
		sort -n | \
		cut -d' ' -f2 | \
		uniq -c | \
		grep -q ' 2 ' \
	|| (echo "build artifacts not the same size" && exit 1)