#!/usr/bin/make -f

# Modules that webpack and gulp have to resolve by name.  Debian keeps them in
# /usr/share/nodejs, but both tools resolve from the source tree, so they are
# linked into node_modules below (see debian/README.source).
NODE_MODULES = \
	@babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript \
	@babel/plugin-transform-runtime @babel/runtime \
	@csstools/postcss-light-dark-function @fluent/bundle @fluent/dom @fluent/react \
	@svgr/webpack \
	autoprefixer babel-loader cached-iterable classnames clean-webpack-plugin copy-webpack-plugin \
	css-loader darkreader eld event-emitter gulp gulp-postcss html-webpack-plugin \
	immutable \
	jszip luaparse mathjax-full mini-css-extract-plugin ordered-read-streams \
	pako path-browserify postcss postcss-discard-comments postcss-dir-pseudo-class \
	postcss-loader postcss-nesting postcss-rtlcss postcss-selector-parser prop-types \
	queue raw-loader react react-dom \
	sass sass-loader sentencex-ts sorted-btree terser-webpack-plugin vinyl \
	webpack webpack-cli webpack-stream

%:
	dh $@

override_dh_auto_configure:

override_dh_auto_build:
	mkdir -p node_modules
	for d in @babel @csstools @fluent @svgr; do mkdir -p node_modules/$$d; done
	for m in $(NODE_MODULES); do \
	  if [ -e /usr/share/nodejs/$$m ]; then \
	    ln -sf /usr/share/nodejs/$$m node_modules/$$m; \
	  else \
	    echo "zotero-reader: build dependency module missing: $$m" >&2; exit 1; \
	  fi; \
	done
	# epub.js is a "file:" dependency upstream; it is vendored in the tarball.
	ln -sf ../epubjs/epub.js node_modules/epubjs
	# pdf.js' gulpfile resolves the webpack aliases for the legacy "fluent-*"
	# names against its own directory (path.join(__dirname, ...)), so it needs
	# a node_modules below pdfjs/pdf.js as well.
	ln -sfn ../../node_modules pdfjs/pdf.js/node_modules
	# The CMap and standard font data live in zotero-pdfjs-data; they are
	# linked into the source tree here only so that pdf.js' build can copy
	# them, and are replaced by symlinks into that package at install time.
	ln -sfn /usr/share/zotero/resource/pdfjs/bcmaps pdfjs/pdf.js/external/bcmaps
	ln -sfn /usr/share/zotero/resource/pdfjs/standard_fonts pdfjs/pdf.js/external/standard_fonts
	# 1) pdf.js: build the generic viewer (upstream's pdfjs/build does the same,
	#    but installs the dependencies over the network first).
	cd pdfjs/pdf.js && gulp generic
	# 2) lay the result out as upstream's pdfjs/build does for PDFJS_CONFIG=zotero
	cd $(CURDIR) && mkdir -p build/zotero/pdf/build build/zotero/pdf/web/images
	cp pdfjs/pdf.js/build/generic/LICENSE build/zotero/pdf/
	cp pdfjs/pdf.js/build/generic/build/pdf.mjs build/zotero/pdf/build/
	cp pdfjs/pdf.js/build/generic/build/pdf.worker.mjs build/zotero/pdf/build/
	cp -r pdfjs/pdf.js/build/generic/web/cmaps build/zotero/pdf/web/
	cp -r pdfjs/pdf.js/build/generic/web/standard_fonts build/zotero/pdf/web/
	cp -r pdfjs/pdf.js/build/generic/web/iccs build/zotero/pdf/web/
	cp -r pdfjs/pdf.js/build/generic/web/wasm build/zotero/pdf/web/
	cp pdfjs/pdf.js/build/generic/web/viewer.html build/zotero/pdf/web/
	cp pdfjs/pdf.js/build/generic/web/viewer.mjs build/zotero/pdf/web/
	cp pdfjs/pdf.js/build/generic/web/images/loading-icon.gif build/zotero/pdf/web/images/
	cp pdfjs/viewer.css build/zotero/pdf/web/
	# 3) the reader bundle itself
	webpack --config-name zotero

override_dh_auto_test:

override_dh_auto_install:

override_dh_install:
	dh_install
	# Share the CMap and standard font data with zotero-pdfjs-data instead of
	# shipping a second copy of it.
	rm -rf debian/zotero-reader/usr/share/zotero/resource/reader/pdf/web/cmaps \
	       debian/zotero-reader/usr/share/zotero/resource/reader/pdf/web/standard_fonts
	# The upstream license copies only need to be in the source package; the
	# installed copyright file is debian/copyright.  The ICC profiles come out
	# of pdf.js' build with the executable bit set.
	rm -f debian/zotero-reader/usr/share/zotero/resource/reader/pdf/LICENSE \
	      debian/zotero-reader/usr/share/zotero/resource/reader/pdf/web/iccs/LICENSE
	chmod 644 debian/zotero-reader/usr/share/zotero/resource/reader/pdf/web/iccs/*.icc
	dh_link /usr/share/zotero/resource/pdfjs/bcmaps \
	        /usr/share/zotero/resource/reader/pdf/web/cmaps
	dh_link /usr/share/zotero/resource/pdfjs/standard_fonts \
	        /usr/share/zotero/resource/reader/pdf/web/standard_fonts

override_dh_clean:
	dh_clean
	rm -rf build node_modules pdfjs/pdf.js/node_modules pdfjs/pdf.js/build \
	       pdfjs/pdf.js/external/bcmaps pdfjs/pdf.js/external/standard_fonts
