From d24f093a65cf90f403d2e45e6490b7931f5be978 Mon Sep 17 00:00:00 2001
From: Luke Naylor <l.naylor@sms.ed.ac.uk>
Date: Thu, 8 Feb 2024 23:01:11 +0000
Subject: [PATCH] Refactor py lib make targets and add unified target

---
 Makefile | 57 +++++++++++++++++++++-----------------------------------
 1 file changed, 21 insertions(+), 36 deletions(-)

diff --git a/Makefile b/Makefile
index bc870bf..b64f958 100644
--- a/Makefile
+++ b/Makefile
@@ -3,51 +3,36 @@
 
 MAINTEXFILE = main.tex
 TEXFILES = ${MAINTEXFILE}
-SAGETEXSCRIPT = main.sagetex.sage
+NOTEBOOKBASENAMES = plots_and_expressions examples characteristic_curves rank_zero_case other_P_choice
 
 main.pdf: ${TEXFILES}  main.sagetex.sout.tmp
 	latexmk
 
-main.sagetex.sout.tmp: ${SAGETEXSCRIPT} plots_and_expressions.py examples.py characteristic_curves.py rank_zero_case.py other_P_choice.py
+sage_artifacts: main.sagetex.sout.tmp
+
+SAGETEXSCRIPT = main.sagetex.sage
+main.sagetex.sout.tmp: ${SAGETEXSCRIPT} notebook_py_libs
 	PYTHONPATH=./sagetexscripts/ sage ${SAGETEXSCRIPT}
 
 ${SAGETEXSCRIPT}: ${TEXFILES}
 	latexmk || echo this shoud fail
 
-plots_and_expressions.py: plots_and_expressions.ipynb
-	jupyter nbconvert --to script plots_and_expressions.ipynb
-	mv plots_and_expressions.py plots_and_expressions.sage
-	sed -e "/get_ipython/d" -i plots_and_expressions.sage
-	sage --preparse plots_and_expressions.sage
-	mv plots_and_expressions.sage.py plots_and_expressions.py
-
-examples.py: plots_and_expressions.py examples.ipynb
-	jupyter nbconvert --to script examples.ipynb
-	mv examples.py examples.sage
-	sed -e "/get_ipython/d" -i examples.sage
-	sage --preparse examples.sage
-	mv examples.sage.py examples.py
-
-characteristic_curves.py: characteristic_curves.ipynb
-	jupyter nbconvert --to script characteristic_curves.ipynb
-	mv characteristic_curves.py characteristic_curves.sage
-	sed -e "/get_ipython/d" -i characteristic_curves.sage
-	sage --preparse characteristic_curves.sage
-	mv characteristic_curves.sage.py characteristic_curves.py
-
-rank_zero_case.py: rank_zero_case.ipynb
-	jupyter nbconvert --to script rank_zero_case.ipynb
-	mv rank_zero_case.py rank_zero_case.sage
-	sed -e "/get_ipython/d" -i rank_zero_case.sage
-	sage --preparse rank_zero_case.sage
-	mv rank_zero_case.sage.py rank_zero_case.py
-
-other_P_choice.py: other_P_choice.ipynb
-	jupyter nbconvert --to script other_P_choice.ipynb
-	mv other_P_choice.py other_P_choice.sage
-	sed -e "/get_ipython/d" -i other_P_choice.sage
-	sage --preparse other_P_choice.sage
-	mv other_P_choice.sage.py other_P_choice.py
+# PYTHON LIBS FROM NOTEBOOKS
+
+define NOTEBOOK_TO_LIB_RULE
+$(1).py: $(1).ipynb
+	jupyter nbconvert --to script $(1).ipynb
+	mv $(1).py $(1).sage
+	sed -e "/get_ipython/d" -i $(1).sage
+	sage --preparse $(1).sage
+	mv $(1).sage.py $(1).py
+endef
+
+$(foreach _base, $(NOTEBOOKBASENAMES), $(eval $(call NOTEBOOK_TO_LIB_RULE, $(_base))))
+
+notebook_py_libs: $(addsuffix .py, $(NOTEBOOKBASENAMES))	
+
+# MISCELANEOUS
 
 .PHONY: clean nosage noappendix
 clean:
-- 
GitLab