docmachine-containers/Makefile

161 lines
4.5 KiB
Makefile
Raw Normal View History

2018-04-20 15:27:59 +00:00
#!/usr/bin/make -f
2021-12-06 13:59:18 +00:00
## System-wide installation of python/node ?
SYSTEM_INSTALL=0
## Configure this part if you wish to
DEPLOY_REPO=
DEPLOY_OPTS=
## Input directories
SLIDES_DIR=slides
DOCS_DIR=docs
IMAGES_DIR=images
BUILD_DIR=_build
2021-07-23 14:15:53 +00:00
CACHE_DIR=_cache
## Internal directories
CACHE_SLIDES_DIR=$(CACHE_DIR)/slides
## Output directories
BUILD_SLIDES_DIR=$(BUILD_DIR)/slides
BUILD_DOCS_DIR=$(BUILD_DIR)/docs
BUILD_IMAGES_DIR=images
2021-11-25 15:59:13 +00:00
BUILD_VERSION=v$(shell date "+%Y%m%d-%H%M")
2021-07-23 14:15:53 +00:00
## Ports
2020-04-19 10:44:17 +00:00
DOCS_PORT=5100
SLIDES_PORT=5200
2018-04-20 15:27:59 +00:00
## Find .md slides
SLIDES_MDPP=$(shell find -L $(SLIDES_DIR) -regextype sed \( -name '*.mdpp' ! -regex '.*/_.*' \))
2021-07-23 14:15:53 +00:00
SLIDES_MDPP_MD=$(patsubst $(SLIDES_DIR)/%.mdpp,$(CACHE_SLIDES_DIR)/%.mdpp.md,$(SLIDES_MDPP))
SLIDES_MDPP_MD_PDF=$(patsubst $(CACHE_SLIDES_DIR)/%.mdpp.md,$(BUILD_SLIDES_DIR)/%.pdf,$(SLIDES_MDPP_MD))
2022-06-20 10:13:22 +00:00
SLIDES_MDPP_MD_PPTX=$(patsubst $(CACHE_SLIDES_DIR)/%.mdpp.md,$(BUILD_SLIDES_DIR)/%.pptx,$(SLIDES_MDPP_MD))
2021-07-23 14:15:53 +00:00
SLIDES_MD=$(shell find -L $(SLIDES_DIR) -regextype sed \( -name '*.md' ! -regex '.*/_.*' \)) $(SLIDES_MDPP_MD)
2021-07-23 14:15:53 +00:00
SLIDES_MD_PDF=$(patsubst $(SLIDES_DIR)/%.md,$(BUILD_SLIDES_DIR)/%.pdf,$(SLIDES_MD))
2022-06-20 10:13:22 +00:00
SLIDES_MD_PPTX=$(patsubst $(SLIDES_DIR)/%.md,$(BUILD_SLIDES_DIR)/%.pptx,$(SLIDES_MD))
2021-07-23 14:15:53 +00:00
2023-04-06 18:15:54 +00:00
SLIDES_MD_ALL=$(SLIDES_MDPP_MD) $(SLIDES_MD) $(SLIDES_DIR)/autoslide.md
SLIDES_PDF_ALL=$(SLIDES_MDPP_MD_PDF) $(SLIDES_MD_PDF) $(BUILD_SLIDES_DIR)/autoslide.pdf
SLIDES_PPTX_ALL=$(SLIDES_MDPP_MD_PPTX) $(SLIDES_MD_PPTX) $(BUILD_SLIDES_DIR)/autoslide.pptx
DOCS_MD=$(shell find -L $(DOCS_DIR) -regextype sed \( -name '*.md' ! -regex '.*/_.*' \))
2018-04-20 15:27:59 +00:00
## Find .uml graphs
DOCS_IMAGES_UML=$(shell find -L $(IMAGES_DIR) -regextype sed \( -name '*.uml' ! -regex '.*/_.*' \))
DOCS_IMAGES_UML_SVG=$(patsubst $(IMAGES_DIR)/%.uml,$(BUILD_IMAGES_DIR)/%.uml.svg,$(DOCS_IMAGES_UML))
## Find .dot graphs
DOCS_IMAGES_DOT=$(shell find -L $(IMAGES_DIR) -regextype sed \( -name '*.dot' ! -regex '.*/_.*' \))
DOCS_IMAGES_DOT_SVG=$(patsubst $(IMAGES_DIR)/%.dot,$(BUILD_IMAGES_DIR)/%.dot.svg,$(DOCS_IMAGES_DOT))
2020-09-03 09:30:31 +00:00
## Find .circo graphs
DOCS_IMAGES_CIRCO=$(shell find -L $(IMAGES_DIR) -regextype sed \( -name '*.circo' ! -regex '.*/_.*' \))
DOCS_IMAGES_CIRCO_SVG=$(patsubst $(IMAGES_DIR)/%.circo,$(BUILD_IMAGES_DIR)/%.circo.svg,$(DOCS_IMAGES_CIRCO))
## Find .ora images
DOCS_IMAGES_ORA=$(shell find -L $(IMAGES_DIR) -regextype sed \( -name '*.ora' ! -regex '.*/_.*' \))
DOCS_IMAGES_ORA_PNG=$(patsubst $(IMAGES_DIR)/%.ora,$(BUILD_IMAGES_DIR)/%.ora.png,$(DOCS_IMAGES_ORA))
## Merge all lists
DOCS_IMAGES_SVG=$(DOCS_IMAGES_DOT_SVG) $(DOCS_IMAGES_CIRCO_SVG) $(DOCS_IMAGES_UML_SVG)
DOCS_IMAGES_PNG=$(DOCS_IMAGES_ORA_PNG)
2024-09-22 23:39:46 +00:00
export
2020-09-03 09:30:31 +00:00
all: help
2018-04-20 15:27:59 +00:00
##
## Install prerequisites
##
2018-04-20 15:27:59 +00:00
2024-09-22 21:42:11 +00:00
.PHONY: prepare
prepare:
2018-04-20 15:27:59 +00:00
images: $(DOCS_IMAGES_SVG) $(DOCS_IMAGES_PNG) ## build images
@echo "Source:"
@echo " ora: $(DOCS_IMAGES_ORA)"
@echo " uml: $(DOCS_IMAGES_UML)"
@echo " dot: $(DOCS_IMAGES_DOT)"
@echo " circo: $(DOCS_IMAGES_CIRCO)"
@echo "Built: $(DOCS_IMAGES_SVG) $(DOCS_IMAGES_PNG)"
for dir in $$(find -L $(DOCS_DIR) -type d -regextype sed -regex '.*/[0-9][^/]*/images$$') $(DOCS_DIR)/images ; do \
rsync -av $$dir/ $(SLIDES_DIR)/images/ || exit 1 ; \
done
2020-09-03 09:30:31 +00:00
.PHONY: images
%.ora.png: %.ora
TMPDIR="$$(mktemp -d)" \
&& unzip -q $< -d "$$TMPDIR" mergedimage.png \
&& touch "$$TMPDIR/mergedimage.png" \
&& mv "$$TMPDIR/mergedimage.png" $@
%.uml.svg: %.uml
plantuml -pipe -tsvg < $< > $@
2020-09-03 09:30:31 +00:00
%.dot.svg: %.dot
dot -Tsvg $< > $@
%.circo.svg: %.circo
circo -Tsvg $< > $@
2018-04-20 15:27:59 +00:00
2021-07-23 14:15:53 +00:00
$(CACHE_SLIDES_DIR)/%.mdpp.md: $(SLIDES_DIR)/%.mdpp
mkdir -p "$$(dirname "$@")"
m4 -d -I$(SLIDES_DIR) -I$(CACHE_SLIDES_DIR) $< > $@ \
|| ( rm -f $@ && exit 1 )
watch: ## run development server
$(MAKE) autoslide
2024-09-22 21:42:11 +00:00
pipenv run honcho start
2020-09-03 09:30:31 +00:00
serve: watch
2018-04-20 15:27:59 +00:00
2024-09-22 21:42:11 +00:00
.PHONY: watch serve
2018-04-20 15:27:59 +00:00
##
## Build final documents
##
## slides => PDF
## docs => static web site
##
2018-04-20 15:27:59 +00:00
build: build-pdf build-html ## build all documents as PDF and HTML files
2024-09-22 23:03:10 +00:00
build-pptx: ## build both docs and slides as PPTX files
build-html: ## build both docs and slides as HTML files
build-pdf: ## build both docs and slides as PDF files
2021-12-21 15:39:51 +00:00
2024-09-22 21:42:11 +00:00
.PHONY: build
help: ## print this help
@echo "Usage: make <target>"
@echo ""
@echo "With one of following targets:"
@echo ""
@awk 'BEGIN {FS = ":.*?## "} \
/^[a-zA-Z_-]+:.*?## / \
{ sub("\\\\n",sprintf("\n%22c"," "), $$2); \
printf("\033[36m%-20s\033[0m %s\n", $$1, $$2); \
2024-09-22 22:06:32 +00:00
}' $(MAKEFILE_LIST) | sort
@echo ""
##
## Clean
##
clean: # remove generated documents
.PHONY: clean
2018-04-20 15:27:59 +00:00
include tasks/docs.mk
include tasks/slides.mk
include tasks/docker.mk
include tasks/utils.mk
include tasks/images.mk
2024-09-22 23:03:10 +00:00
include tasks/shell.mk
2021-11-25 15:59:13 +00:00