📚 The CoCalc Library - books, templates and other resources
License: OTHER
OBSHELL=/bin/bash
.DEFAULT_GOAL = html
LESSONS_DIR = lessons
GENERATED_LESSONS_DIR = book/lessons
_requirements.installed:
pip install -q -r requirements.txt
touch _requirements.installed
MARKDOWNS = $(wildcard $(LESSONS_DIR)/*.md)
MD_OUTPUTS = $(patsubst $(LESSONS_DIR)/%.md, $(GENERATED_LESSONS_DIR)/%.md, $(MARKDOWNS))
NOTEBOOKS = $(patsubst %.md, %.ipynb, $(MD_OUTPUTS))
.SECONDARY: $(MD_OUTPUTS) $(NOTEBOOKS)
$(GENERATED_LESSONS_DIR)/%.ipynb:$(LESSONS_DIR)/%.md book/lessons book/lessons/images
# This does not work, due to bug in notedown; see https://github.com/aaren/notedown/issues/53
#notedown --match=python --precode='%matplotlib inline' $< > $@
notedown --match=python $< > $@
jupyter nbconvert --execute --inplace $@ --ExecutePreprocessor.timeout=-1
%.md:%.ipynb
jupyter nbconvert --to=mdoutput --output="$(notdir $@)" --output-dir=$(GENERATED_LESSONS_DIR) $<
# $(eval NBSTRING := [📂 Download lesson notebook](.\/$(basename $(notdir $@)).ipynb)\n\n)
# sed -i'.bak' '1s/^/$(NBSTRING)/' $@
book/lessons:
mkdir -p book/lessons
book/lessons/images:
ln -s ${PWD}/lessons/images ${PWD}/book/lessons/images
html: | _requirements.installed $(NOTEBOOKS) $(MD_OUTPUTS)
@export SPHINXOPTS=-W; make -C book html
cp $(GENERATED_LESSONS_DIR)/*.ipynb book/build/html/lessons/
clean:
rm -rf $(GENERATED_LESSONS_DIR)/*