all:
	make build
	make install

install:
	zip -r application_xlsx.zip . -x "node_modules/*" -x "vendor/*" -x "convert/*"
	mv application_xlsx.zip ../../../dist/data/state/plugins/

build:
	make deps
	npm run build
	brotli -f --best ./dist/assets/*.js
	brotli -f --best ./dist/assets/*.css
	brotli -f --best ./dist/assets/*.wasm

deps:
	[ -d vendor/IronCalc ] || git clone --depth 1 https://github.com/ironcalc/IronCalc vendor/IronCalc
	[ -d vendor/IronCalc/bindings/wasm/pkg ] && [ -d vendor/IronCalc/webapp/IronCalc/dist ] || { \
		docker build --target builder -t ironcalc-builder vendor/IronCalc && \
		id=$$(docker create ironcalc-builder) && \
		docker cp $$id:/app/bindings/wasm/pkg vendor/IronCalc/bindings/wasm/pkg && \
		docker cp $$id:/app/webapp/IronCalc/dist vendor/IronCalc/webapp/IronCalc/dist && \
		docker rm $$id; \
	}
	[ -d convert/pkg ] || { \
		cd convert && \
		sed -i 's|^zip = "0.6"|zip = { version = "0.6", default-features = false, features = ["deflate"] }|' ../vendor/IronCalc/xlsx/Cargo.toml && \
		cargo build --target wasm32-unknown-unknown --release; \
	}
	[ -d node_modules ] || npm install

clean:
	rm -rf dist node_modules vendor
