JS_FILES = $(filter-out %.min.js,$(wildcard \
			public/js/*.js \
			))
JS_MINIFIED = $(JS_FILES:.js=.min.js)
JS_GZ = $(JS_FILES:.js=.min.js.gz)
JS_BR = $(JS_FILES:.js=.min.js.br)
GENERATED= $(JS_MINIFIED) $(JS_GZ) $(JS_BR)
PUBLISHED=$(foreach p,$(GENERATED),public/js/v1/$(shell basename $p))

node_modules: package.json
	@npm i --registry http://npm.yandex-team.ru

%.min.js: %.js node_modules
	@echo '==> Minifying $<'
	./node_modules/.bin/terser -cm -- $< > $@
	@echo

%.min.js.gz: %.min.js
	@echo '==> Gzipping $<'
	gzip -9 -c -f $< > $@
	cp $< ./views/$(shell basename $< .min.js).def
	@echo

%.min.js.br: %.min.js
	@echo '==> Brotliing $<'
	brotli --force --input $< --output $@ || brotli --force --output=$@ $< || true
	@echo


$(PUBLISHED): ${GENERATED}
	@echo '==> Publishing $^'
	@mkdir -p  public/js/v1/
	cp $^ public/js/v1/

clean:
	rm -f $(JS_GZ) $(JS_BR) $(JS_MINIFIED) $(PUBLISHED)

check:
	@echo "JS_FILES = $(JS_FILES)"
	@echo "JS_MINIFIED = $(JS_MINIFIED)"
	@echo "PUBLISHED = $(PUBLISHED)"
	@echo "GENERATED = $(GENERATED)"

all: $(PUBLISHED)

.PHONY: all
