# Makefile
# Espace de recherche

# @todo faire des cibles print et screen (par exemple) au lieu de all pour choisir
# make [screen|print] PROJET=name

#############################################################
# Aide
#############################################################

# make
# Recette par défaut, si aucune n’est mentionnée
.DEFAULT_GOAL := aide

# make aide
#
# Aide-mémoire
.PHONY: aide
aide:
	@cat aide.txt | ccze -A

#############################################################
# 1. argument obligatoire en ligne de commande
#############################################################
# Passer le nom du projet à traiter : avec la variable PROJET.
# exemple    : $ make PROJET=proposition
# remarques  : variable à spécifier pour toutes les recettes
#              qui l'utilisent.
#              le nom du projet doit correspondre avec le nom
#              d’un dossier dans ./src/

#############################################################
# variables
#############################################################

SHELL := /bin/bash

# Timestamp
# -05:00
date := $(shell date +%Y-%m-%dT%H:%M:%S-05:00)
# -04:00
#date      := $(shell date +%Y-%m-%dT%H:%M:%S-04:00)
#hash      := $(shell cat .git/refs/heads/main)

# Name
name = $(PROJET)

# Variables pour les sources
config_screen = ./src/config-screen.yml
config_print  = ./src/config-print.yml
src_dir       = ./src/$(name)
src_files     = $(shell ls $(src_dir)/*.md | grep -v -f exclure.txt)

# Variables pour les extrants
zip   = ./archives/$(name).zip
dist  = ./dist/$(name)
print = ./dist/$(name)/$(name).html


#############################################################
# receipes
#############################################################

# $(zip) est une dépendance de $(print)
# c'est pourquoi $(zip) s'exécute avec build, avant $(print)
.PHONY: build
build: projet $(print)

###############################################
# Validation
#
# Vérifier que le projet est indiqué explicitement
#
projet: $(src_dir)/*
ifndef PROJET
	@echo "ERREUR : aucun projet sélectionné. Bye."
	@exit 1
endif

###############################################
# Chunked
#
# Créer la version HTML pour l'écran
#
$(zip): $(src_dir)/* $(config_screen)
	pandoc $(src_files) \
   --defaults $(config_screen) \
   --metadata-file ./src/global-metadata.yml \
   --metadata-file $(<D)/abstract.yml \
   --metadata-file $(<D)/metadata.yml \
   --metadata-file $(<D)/theme.yml \
   --metadata=date:$(date) \
   --toc \
   --log $(<D)/log.json \
   --output $@
	unzip -o -O UTF-8 $@ -d $(dist)

###############################################
# Print
#
# Créer la version HTML pour l'impression
#
$(print): $(zip) $(config_print)
	pandoc $(src_files) \
   --defaults $(config_print) \
   --metadata-file ./src/global-metadata.yml \
   --metadata-file $(src_dir)/abstract.yml \
   --metadata-file $(src_dir)/metadata.yml \
   --metadata=date:$(date) \
   --toc \
   --output $@

#############################################################
# utilitaires
#############################################################

.PHONY: antidote
antidote:
	/usr/local/bin/Antidote9 $(CORRIGER)

.PHONY: wordcount
wordcount:
	pandoc $(src) \
   --lua-filter ./scripts/wordcount.lua

.PHONY: serve
serve:
	http-server ./dist/ -c-1
