hashcards 0.3.0

A plain text-based spaced repetition system.
PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
SRC    = $(shell find src -name '*.rs')
KATEX_VERSION = 0.16.25
KATEX_URL = https://github.com/KaTeX/KaTeX/releases/download/v$(KATEX_VERSION)/katex.tar.gz

.PHONY: all
all: hashcards

vendor/katex:
	@echo "Downloading KaTeX $(KATEX_VERSION)..."
	@mkdir -p vendor
	@curl -L -o vendor/katex.tar.gz $(KATEX_URL)
	@echo "Extracting KaTeX..."
	@tar -xzf vendor/katex.tar.gz -C vendor
	@rm vendor/katex.tar.gz
	@echo "Rewriting font paths in CSS..."
	@sed -i.bak 's|fonts/|/katex/fonts/|g' vendor/katex/katex.min.css
	@rm vendor/katex/katex.min.css.bak
	@echo "KaTeX extracted to vendor/katex"
	@rm vendor/katex/katex.css
	@rm vendor/katex/katex.js
	@rm vendor/katex/katex.mjs
	@rm vendor/katex/katex-swap.css
	@rm vendor/katex/katex-swap.min.css
	@rm -rf vendor/katex/contrib/
	@rm vendor/katex/fonts/*.ttf
	@rm vendor/katex/fonts/*.woff

hashcards: vendor/katex $(SRC) Cargo.toml Cargo.lock
	cargo build --release
	cp "target/release/hashcards" hashcards

.PHONY: install
install: hashcards
	install -d $(BINDIR)
	install -m 755 hashcards $(BINDIR)/hashcards

.PHONY: uninstall
uninstall:
	rm -f $(BINDIR)/hashcards

.PHONY: example
example:
	rm -f example/hashcards.db
	RUST_LOG=debug cargo run -- drill example

.PHONY: coverage
coverage:
	cargo llvm-cov --html --open --ignore-filename-regex '(main|error|cli).rs'

.PHONY: clean
clean:
	rm -f hashcards
	rm -rf vendor
	cargo clean