12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # Environment vars
- DIST_DIR := dist
- DIR_OF_PROJECTS := src/projets
- # Computed vars
- SRC_HTMLS := $(shell find src -name '*.src.html')
- SRC_MDS := $(shell find src -name '*.src.md')
- SRC_TEMPLATES := $(shell find src/templates -name '*.html')
- SRC_LIST_YML := $(shell echo $(DIR_OF_PROJECTS)/*/*.meta.yml)
- GEN_HTMLS := $(SRC_HTMLS:%.src.html=%.gen.html)
- GEN_MDS := $(SRC_MDS:%.src.md=%.gen.html)
- GEN_LIST_YML := $(DIR_OF_PROJECTS)/list.gen.yml
- GEN_CONTENT_FILES := $(GEN_HTMLS) $(GEN_MDS)
- GEN_FILES := $(GEN_CONTENT_FILES) $(GEN_LIST_YML)
- INCLUDED_FILES := $(shell find src/include -type f)
- EMBEDDED_FILES := $(shell find src -name '*.png' -or -name '*.svg' -or -name '*.pdf')
- DIST_GEN_FILES := $(GEN_CONTENT_FILES:src/%.gen.html=$(DIST_DIR)/%.html)
- DIST_INC_FILES := $(INCLUDED_FILES:src/%=$(DIST_DIR)/%)
- DIST_EMB_FILES := $(EMBEDDED_FILES:src/%=$(DIST_DIR)/%)
- DIST_FILES := $(DIST_GEN_FILES) $(DIST_INC_FILES) $(DIST_DWN_FILES) $(DIST_EMB_FILES) $(DIST_DIR)/favicon.ico
- BUILD_VERSION := $(shell git describe)
- BUILD_DATE := $(shell date "+%F")
- PANDOC_GEN := pandoc --template src/templates/main.html --metadata-file src/meta.yml --metadata=build-date:$(BUILD_DATE) --metadata=build-version:$(BUILD_VERSION) --wrap=none
- LIST_GEN := yq eval-all '{"data": ., "target": {"content": filename | sub("meta.yml", "html") | sub(".*/", ""), "dir": filename | sub("$(DIR_OF_PROJECTS)/", "") | sub("/[^/]*.yml", "")}} as $$item ireduce ([]; . + $$item) | {"list": .}'
- # Functions
- extract_category = $(word 2, $(subst /, ,$(1)))
- extract_update_date = $(shell git log -1 --pretty="format:%cs" $(1))
- # Build
- .PHONY: build
- build: $(GEN_CONTENT_FILES)
- $(info HTML generated)
- %.gen.html: %.src.html %.meta.yml $(SRC_TEMPLATES)
- $(PANDOC_GEN) --metadata-file $*.meta.yml --metadata=category-$(call extract_category,$*) --metadata=update-date:$(call extract_update_date,$<) --output $@ $<
- %.gen.html: %.src.md %.meta.yml $(SRC_TEMPLATES)
- $(PANDOC_GEN) --metadata-file $*.meta.yml --metadata=category-$(call extract_category,$*) --metadata=update-date:$(call extract_update_date,$<) --output $@ $<
- # Build lists
- $(GEN_LIST_YML): $(SRC_LIST_YML)
- $(LIST_GEN) $(SRC_LIST_YML) > $@
- $(DIR_OF_PROJECTS)/content.gen.html: $(DIR_OF_PROJECTS)/content.src.html $(DIR_OF_PROJECTS)/content.meta.yml $(GEN_LIST_YML) $(SRC_TEMPLATES)
- $(PANDOC_GEN) --metadata-file $(DIR_OF_PROJECTS)/content.meta.yml --metadata-file $(GEN_LIST_YML) --metadata=category-projets --metadata=update-date:$(call extract_update_date,$<) --output $@ $<
- # Distribution
- .PHONY: install
- install: $(DIST_DIR)
- $(info Distributed folder generated)
- $(DIST_DIR): $(DIST_FILES)
- $(DIST_DIR)/%.html: src/%.gen.html
- mkdir --parents $(dir $@)
- cp $< $@
- $(DIST_DIR)/%: src/%
- mkdir --parents $(dir $@)
- cp $< $@
- # Cleaning
- .PHONY: clean
- clean:
- rm -f $(GEN_FILES)
- .PHONY: clean-dist
- clean-dist:
- rm -rf $(DIST_DIR)/*
- .PHONY: clean-all
- clean-all: clean clean-dist
- .PHONY: debug
- debug:
- $(info SRC_HTMLS $(SRC_HTMLS))
- $(info SRC_MDS $(SRC_MDS))
- $(info SRC_TEMPLATES $(SRC_TEMPLATES))
- $(info GEN_HTMLS $(GEN_HTMLS))
- $(info GEN_MDS $(GEN_MDS))
- $(info GEN_FILES $(GEN_FILES))
- $(info GEN_CONTENT_FILES $(GEN_CONTENT_FILES))
- $(info INCLUDED_FILES $(INCLUDED_FILES))
- $(info EMBEDDED_FILES $(EMBEDDED_FILES))
- $(info DIST_FILES $(DIST_FILES))
|