mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 16:43:36 +00:00
96 lines
2.4 KiB
Makefile
96 lines
2.4 KiB
Makefile
LATEXMK := latexmk
|
|
SRCDIR := paper/src
|
|
BUILDDIR := build
|
|
TEX := main.tex
|
|
JOBNAME := main
|
|
PDF := paper/$(BUILDDIR)/$(JOBNAME).pdf
|
|
VENV := .venv
|
|
PYTHON := $(VENV)/bin/python
|
|
PIP := $(VENV)/bin/pip
|
|
PYTEST := $(VENV)/bin/pytest
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "pdf.build pdf.watch pdf.clean | test.backend test.e2e test.all | web.dev | install | stats.lines"
|
|
|
|
$(BUILDDIR):
|
|
mkdir -p paper/$(BUILDDIR)
|
|
|
|
.PHONY: pdf.build
|
|
pdf.build: $(BUILDDIR)
|
|
@bash paper/concat_code.sh
|
|
@cd $(SRCDIR) && \
|
|
$(LATEXMK) -pdf -jobname=$(JOBNAME) -f \
|
|
-interaction=nonstopmode -file-line-error \
|
|
-r ../.latexmkrc \
|
|
-outdir=../$(BUILDDIR) $(TEX)
|
|
|
|
.PHONY: pdf.watch
|
|
pdf.watch: $(BUILDDIR)
|
|
@cd $(SRCDIR) && \
|
|
$(LATEXMK) -pvc -pdf -jobname=$(JOBNAME) -f \
|
|
-interaction=nonstopmode -file-line-error \
|
|
-r ../.latexmkrc \
|
|
-outdir=../$(BUILDDIR) $(TEX)
|
|
|
|
.PHONY: pdf.clean
|
|
pdf.clean:
|
|
@cd $(SRCDIR) && \
|
|
$(LATEXMK) -C -jobname=$(JOBNAME) -outdir=../$(BUILDDIR) || true
|
|
rm -rf paper/$(BUILDDIR)/*
|
|
|
|
.PHONY: test.backend
|
|
test.backend: $(VENV)
|
|
$(PYTEST) -v
|
|
|
|
.PHONY: test.e2e
|
|
test.e2e:
|
|
@cd tests/e2e && npm install
|
|
@cd tests/e2e && npx playwright install chromium
|
|
@timeout 30 bash -c 'until curl -sf http://localhost:5000/health > /dev/null 2>&1; do sleep 1; done' || (echo "Backend not ready" && exit 1)
|
|
@timeout 30 bash -c 'until curl -sf http://localhost:3000 > /dev/null 2>&1; do sleep 1; done' || (echo "Web app not ready" && exit 1)
|
|
@cd tests/e2e && npm test
|
|
|
|
.PHONY: test.all
|
|
test.all: test.backend test.e2e
|
|
|
|
.PHONY: web.dev
|
|
web.dev:
|
|
@cd web && npm install && npm run dev
|
|
|
|
$(VENV):
|
|
python3 -m venv $(VENV)
|
|
$(PIP) install --upgrade pip
|
|
|
|
.PHONY: install
|
|
install: $(VENV)
|
|
$(PIP) install -r requirements.txt
|
|
|
|
.PHONY: stats.lines
|
|
stats.lines:
|
|
@find . \( -path '*/node_modules' -o -path '*/.venv' -o -path '*/venv' \) -prune -o \
|
|
\( -name "*.ts" -o -name "*.py" \) -type f -print0 | xargs -0 cat | wc -l
|
|
|
|
.PHONY: wordcount
|
|
wordcount:
|
|
@echo "Counting words in main text (excluding appendix)..."
|
|
@texcount -nosub -total -sum -1 \
|
|
$(SRCDIR)/chapters/01-intro.tex \
|
|
$(SRCDIR)/chapters/02-literature-review.tex \
|
|
$(SRCDIR)/chapters/03-methodology.tex \
|
|
$(SRCDIR)/chapters/04-results.tex \
|
|
$(SRCDIR)/chapters/05-discussion.tex \
|
|
$(SRCDIR)/chapters/06-conclusion.tex
|
|
|
|
|
|
.PHONY: pdf clean watch run.webapp test count-lines all
|
|
pdf: pdf.build
|
|
clean: pdf.clean
|
|
watch: pdf.watch
|
|
run.webapp: web.dev
|
|
test: test.backend
|
|
count-lines: stats.lines
|
|
all: pdf.build
|