# Configuration

Assignments=Semaine1 Semaine2 Semaine3 Semaine4 Semaine5 Semaine6 Semaine7 Semaine8 Semaine9 Exercices
# Semaine2 Semaine3 Semaine4 Semaine5 Semaine6 Semaine7 Semaine8 Semaine9
AssignmentSources=$(foreach dir, $(Assignments), $(wildcard \
        $(dir)/*.md \
        $(dir)/utilities.py \
        $(dir)/nbgrader_config.py \
        $(dir)/*.txt \
        $(dir)/*/*.txt \
        $(dir)/media/* \
        $(dir)/images/* \
        $(dir)/*.cfg \
        $(dir)/Makefile \
        $(dir)/__pycache__/utilities_cours_correction.cpython-*.pyc )) \
    Semaine1/notes_info_111.csv \
    Semaine2/media/observations.csv \
    Semaine2/media/species_info.csv \
    Semaine3/attributs.csv \
    Semaine3/attributs.csv \
    $(wildcard Exercices/*/*.md Exercices/entraîneur.py)

AssignmentFiles=$(AssignmentSources:%=Devoirs/%) \
       $(foreach dir, $(Assignments), Devoirs/$(dir)/.gitlab-ci.yml Devoirs/$(dir)/.gitignore Devoirs/$(dir)/setup.cfg) \
       Devoirs/Semaine4/utilities_cours_correction.pyc \
       Devoirs/Semaine6/utilities_cours_correction.pyc
SolutionFiles=$(AssignmentSources:%=Solutions/%)
AssignmentAssets=$(foreach dir, $(Assignments), $(wildcard $(dir)/*.csv $(dir)/media/* $(dir)/*.py ))
Assets=$(AssignmentAssets:%=Devoirs/%) $(AssignmentAssets:%=Solutions/%) $(wildcard ComputerLab/media/*) ComputerLab/binder/environment.yml Enseignants/.htpasswd Enseignants/.htaccess

NBGRADER_REMOVE_INSTRUCTOR=--TagRemovePreprocessor.enabled=True --TagRemovePreprocessor.remove_cell_tags='["instructor"]'

BUILDDIR=_build

# Rules

all: web install

enseignants: $(Assignments:%=Enseignants/%/)
assignments: $(AssignmentFiles)
solutions: $(SolutionFiles)

clean::
	-rm -rf _build $(Assignments:%=Devoirs/%/*) $(Assignments:%=Enseignants/%) Solutions

Devoirs/%/.gitlab-ci.yml: template/.gitlab-ci.yml
	mkdir -p `dirname $@`
	sed "s/{assignment}/$*/" $< > $@

Devoirs/%/setup.cfg: template/setup.cfg
	mkdir -p `dirname $@`
	cp $< $@

Devoirs/%/.gitignore: template/.gitignore
	mkdir -p `dirname $@`
	cp $< $@

Devoirs/%: %
	mkdir -p `dirname $@`
	cp $< $@

Devoirs/%.py: %.py
	mkdir -p `dirname $@`
	python bin/strip-code $< > $@

Devoirs/%.pyc: %.py
	mkdir -p `dirname $@`
	python bin/byte-compile $< $@

Devoirs/%.md: %.md
	mkdir -p `dirname $@`
	jupytext --to ipynb $<
	nbgrader generate_assignment `dirname $*` "--db=sqlite:///Devoirs/`dirname $*`/.gradebook.db" --create --force --notebook=`basename $*` --CourseDirectory.ignore="['*']"
	rm $*.ipynb
	jupyter nbconvert --inplace $(NBGRADER_REMOVE_INSTRUCTOR) Devoirs/$*.ipynb
	jupytext --to myst Devoirs/$*.ipynb
	rm Devoirs/$*.ipynb

Devoirs/Exercices/%.md: Exercices/%.md
	mkdir -p `dirname $@`
	cp $< $@


Solutions/%: %
	mkdir -p `dirname $@`
	cp $< $@

Solutions/%.md: %.md
	mkdir -p `dirname $@`
	jupytext --to ipynb $<
	cp $*.ipynb Solutions/$*.ipynb
	rm $*.ipynb
	jupyter nbconvert --inplace $(NBGRADER_REMOVE_INSTRUCTOR) Solutions/$*.ipynb
	jupytext --to myst Solutions/$*.ipynb
	rm Solutions/$*.ipynb

Enseignants/%/: %/
	ln -s ../$* Enseignants/$*

assets/%: %
	-mkdir -p `dirname $@`
	-if [ -f $@ ] ; then rm "$@"; fi
	ln "$<" "$@"

_build/html/%:%
	-mkdir -p `dirname $@`
	-if [ -f $@ ] ; then rm "$@"; fi
	ln "$<" "$@"

webassets: $(Assets:%=_build/html/%)
	echo $(Assets)
web:	assignments enseignants webassets
	jupyter-book build .

install:
	rsync -ravz --exclude __pycache__ --delete _build/html/ Nicolas.Thiery.name:www/Enseignement/IntroScienceDonnees/

Devoirs=Semaine2 Semaine3

SourceFiles=$(foreach dir, $(Devoirs),  \
              $(wildcard                \
	        $(dir)/*.md     \
	        $(dir)/media/*  \
	        $(dir)/*.py     \
	        $(dir)/*.cfg ))

DevoirFiles=$(SourceFiles:%=Devoirs/%)  \
	    $(foreach dir, $(Devoirs),          \
              $(Templates:template/%=$(dir)/%))

LITE_CONTENT=$(patsubst %.md, %.ipynb, $(DevoirFiles:Devoirs/%=$(BUILDDIR)/content/%))

lite-content: $(LITE_CONTENT)
	echo $(DevoirFiles)

lite: lite-content
	jupyter lite build --XeusAddon.environment_file=jupyterlite-environment.yml --contents=$(BUILDDIR)/content --output-dir=$(BUILDDIR)/html/lite

$(BUILDDIR)/content/%: Devoirs/%
	mkdir -p `dirname $@`
	cp $< $@

$(BUILDDIR)/content/%.ipynb: Devoirs/%.md
	mkdir -p `dirname $@`
	jupytext $< --to ipynb -o $@
	sed -i 's/[.]md/.ipynb/' $@
	sed -i 's/"python3"/"xeus-python"/' $@
	sed -i 's/"Python 3 .ipykernel."/"Python (XPython)"/' $@
