Skip to content

Instantly share code, notes, and snippets.

@D3f0
Created March 23, 2018 18:27
Show Gist options
  • Save D3f0/21977052601fd47c879cc2aa9dfe4e06 to your computer and use it in GitHub Desktop.
Save D3f0/21977052601fd47c879cc2aa9dfe4e06 to your computer and use it in GitHub Desktop.
Creación de Teoría y Práctica de una materia basada en pandoc (por año)
# Definición automática del año de cursado
YEAR ?= $(shell date "+%Y")
# Directorios y cálculo de los archivos fuente
TEORIA_DIR_NAME ?= Teoría
TEORIA_SRC ?= Teoría
TEORIAS_MD := $(shell ls $(TEORIA_SRC)/*.md | xargs basename)
TOERIAS_PDF := $(foreach FILE,$(TEORIAS_MD),$(YEAR)/$(TEORIA_DIR_NAME)/$(patsubst %.md,%.pdf,$(FILE)))
# Prácticas
PRACTICA_DIR_NAME ?= Práctica
PRACTICA_SRC ?= Práctica
PRACTICAS_MD := $(shell ls $(PRACTICA_SRC)/*.md | xargs basename)
PRACTICA_PDF := $(foreach FILE,$(PRACTICAS_MD),$(YEAR)/$(PRACTICA_DIR_NAME)/$(patsubst %.md,%.pdf,$(FILE)))
all: teoria practica
$(YEAR)/$(PRACTICA_DIR_NAME)/:
mkdir -p $@
$(YEAR)/$(TEORIA_DIR_NAME)/:
mkdir -p $@
$(YEAR)/$(TEORIA_DIR_NAME)/%.pdf: $(TEORIA_SRC)/%.md
$(eval SOURCE_DIR := $(shell greadlink -f $$(dirname $^)))
$(eval TARGET_DIR := $(shell greadlink -f $$(dirname $@)))
$(eval SOURCE_FILE := $(shell basename $^))
$(eval TARGET_FILE := $(shell basename $@))
@echo $(SOURCE_DIR) $(TARGET_DIR) $(SOURCE_FILE) $(TARGET_FILE)
cd $(SOURCE_DIR) && \
pandoc -t beamer -s $(SOURCE_FILE) -o $(TARGET_DIR)/$(TARGET_FILE)
$(YEAR)/$(PRACTICA_DIR_NAME)/%.pdf: $(PRACTICA_SRC)/%.md
$(eval SOURCE_DIR := $(shell greadlink -f $$(dirname $^)))
$(eval TARGET_DIR := $(shell greadlink -f $$(dirname $@)))
$(eval SOURCE_FILE := $(shell basename $^))
$(eval TARGET_FILE := $(shell basename $@))
@echo $(SOURCE_DIR) $(TARGET_DIR) $(SOURCE_FILE) $(TARGET_FILE)
cd $(SOURCE_DIR) && \
pandoc -s $(SOURCE_FILE) -o $(TARGET_DIR)/$(TARGET_FILE)
teoria: $(YEAR)/$(TEORIA_DIR_NAME)/ $(TOERIAS_PDF)
practica: $(YEAR)/$(PRACTICA_DIR_NAME)/ $(PRACTICA_PDF)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment