ESFLAGS = --target=esnext --format=esm deploy-dir: deploy deploy/fastbangs deploy/fastbangs.yaml .PHONY: watch-script watch-style clean deploy-dir build-dir watch-script: frontend/fuzzysort.js esbuild frontend/main.ts --bundle --outfile=deploy/bundle.js $(ESFLAGS) --watch watch-style: while true; do make deploy/style.css; inotifywait -e modify -e move frontend/style.sass; done clean: stack clean --full rm -f deploy.zip rm -f frontend/fuzzysort.js rm -rf build # This leaves the deploy directory, which is intentional, as it may contain # user data build-dir: mkdir -p build build/index.html: frontend/index.html build-dir cp $< $@ build/bundle.js: $(shell find frontend -name '*.ts') frontend/fuzzysort.js build-dir esbuild frontend/main.ts --bundle --outfile=build/bundle.js $(ESFLAGS) build/style.css: frontend/style.sass build-dir sassc $< $@ deploy.zip: deploy-dir zip deploy.zip -r deploy deploy: mkdir -p deploy deploy/fastbangs.yaml: fastbangs.yaml cp --no-clobber $< $@; true deploy/fastbangs: $(shell find src -name '*.hs') build/bundle.js build/index.html build/style.css stack install --local-bin-path deploy frontend/fuzzysort.js: curl -s 'https://cdn.jsdelivr.net/npm/fuzzysort@2.0.4/fuzzysort.min.js' -o $@