|
|
# Time-stamp: <2018-01-27 22:11:28 kmodi>
|
|
|
|
|
|
# Makefile to generate use-package doc site
|
|
|
|
|
|
EMACS ?= emacs
|
|
|
EMACS_exists := $(shell command -v $(EMACS) 2> /dev/null)
|
|
|
ifeq ("$(EMACS_exists)","")
|
|
|
EMACS := /tmp/emacs/bin/emacs
|
|
|
endif
|
|
|
|
|
|
# EMACS_BIN_SOURCE and EMACS_VERSION are used later in the vcheck rule
|
|
|
# only if EMACS_exists has evaluated to "".
|
|
|
EMACS_BIN_SOURCE ?= https://github.com/npostavs/emacs-travis/releases/download/bins
|
|
|
EMACS_VERSION ?= 25.3
|
|
|
|
|
|
# Directory where the required elisp packages are auto-installed
|
|
|
TMPDIR ?= /tmp
|
|
|
OX_HUGO_ELPA=$(TMPDIR)/$(USER)/ox-hugo-dev/
|
|
|
|
|
|
HUGO ?= hugo
|
|
|
HUGO_exists := $(shell command -v $(HUGO) 2> /dev/null)
|
|
|
ifeq ("$(HUGO_exists)","")
|
|
|
HUGO := $(OX_HUGO_ELPA)hugo
|
|
|
endif
|
|
|
|
|
|
# HUGO_VERSION and HUGO_OS are used later in the vcheck rule only if
|
|
|
# HUGO_exists has evaluated to "".
|
|
|
HUGO_VERSION ?= 0.34
|
|
|
# |--------------------|
|
|
|
# | HUGO_OS |
|
|
|
# |--------------------|
|
|
|
# | DragonFlyBSD-64bit |
|
|
|
# | FreeBSD-32bit |
|
|
|
# | FreeBSD-64bit |
|
|
|
# | FreeBSD-ARM |
|
|
|
# | Linux-32bit |
|
|
|
# | Linux-64bit |
|
|
|
# | Linux-ARM |
|
|
|
# | Linux-ARM64 |
|
|
|
# | NetBSD-32bit |
|
|
|
# | NetBSD-64bit |
|
|
|
# | NetBSD-ARM |
|
|
|
# | OpenBSD-32bit |
|
|
|
# | OpenBSD-64bit |
|
|
|
# | macOS-32bit |
|
|
|
# | macOS-64bit |
|
|
|
# |--------------------|
|
|
|
HUGO_OS ?= Linux-64bit
|
|
|
|
|
|
# Directory containing the Hugo site's config.toml
|
|
|
HUGO_BASE_DIR=./
|
|
|
# Value to be passed to hugo's --baseURL argument
|
|
|
HUGO_BASE_URL ?= http://localhost
|
|
|
# Other hugo arguments
|
|
|
HUGO_ARGS=
|
|
|
|
|
|
# Set TIMEZONE to the TZ environment variable. If TZ is unset, Emacs
|
|
|
# uses system wall clock time, which is a platform-dependent default
|
|
|
# time zone --
|
|
|
# https://www.gnu.org/software/emacs/manual/html_node/elisp/Time-Zone-Rules.html
|
|
|
TIMEZONE=${TZ}
|
|
|
|
|
|
# Port for hugo server
|
|
|
PORT=1337
|
|
|
|
|
|
USE_PACKAGE_DOC_DIR=$(shell pwd)
|
|
|
USE_PACKAGE_DOC_SITE_DIR=$(shell pwd)
|
|
|
|
|
|
# https://stackoverflow.com/a/3774731/1219634
|
|
|
# Note that the use of immediate assignment := rather than recursive
|
|
|
# assignment = is important here: you do not want to be running the
|
|
|
# shell escape every time SOURCES is inspected by make.
|
|
|
org_files := $(shell find ../ -type f -name '*.org')
|
|
|
|
|
|
# Path to the Org file (relative to pwd, or absolute)
|
|
|
# ORG_FILE=
|
|
|
|
|
|
# # Function to be run in emacs --batch
|
|
|
# FUNC=
|
|
|
|
|
|
.PHONY: emacs-batch md1 vcheck hugo doc_site
|
|
|
md $(org_files) \
|
|
|
doc_md doc_gh doc \
|
|
|
ctemp clean
|
|
|
|
|
|
# Note: The Org file from $(ORG_FILE) is loaded *after* the --eval
|
|
|
# section gets evaluated i.e. --eval '(progn ..)' $(ORG_FILE) If the
|
|
|
# order is reversed i.e. i.e.$(ORG_FILE) --eval '(progn ..)', the act
|
|
|
# of loading the $(ORG_FILE) file first will load the older Org
|
|
|
# version that ships with Emacs and then run the stuff in --eval that
|
|
|
# loads the new Org version.. and thus we'll end up with mixed Org in
|
|
|
# the load-path.
|
|
|
emacs-batch:
|
|
|
@echo ""
|
|
|
@echo "$(ORG_FILE) ::"
|
|
|
@$(EMACS) --batch --eval "(progn\
|
|
|
(setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\
|
|
|
(when (> (length \"$(TIMEZONE)\") 0) (setenv \"TZ\" \"$(TIMEZONE)\"))\
|
|
|
(setq-default make-backup-files nil)\
|
|
|
(load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\
|
|
|
)" $(ORG_FILE) \
|
|
|
-f $(FUNC) \
|
|
|
--kill
|
|
|
|
|
|
md1:
|
|
|
@$(MAKE) emacs-batch FUNC=org-hugo-export-all-wim-to-md
|
|
|
|
|
|
vcheck:
|
|
|
ifeq ("$(EMACS_exists)","")
|
|
|
@curl -fsSkL --retry 9 --retry-delay 9 -O $(EMACS_BIN_SOURCE)/emacs-bin-$(EMACS_VERSION).tar.gz
|
|
|
@tar xf emacs-bin-$(EMACS_VERSION).tar.gz -C /
|
|
|
endif
|
|
|
@echo "Emacs binary used: $(EMACS)"
|
|
|
@$(EMACS) --batch --eval "(progn\
|
|
|
(setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\
|
|
|
(load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\
|
|
|
(message \"[Version check] Emacs %s\" emacs-version)\
|
|
|
(message \"[Version check] %s\" (org-version nil :full))\
|
|
|
)" \
|
|
|
--kill
|
|
|
ifeq ("$(HUGO_exists)","")
|
|
|
@curl https://github.com/gohugoio/hugo/releases/download/v$(HUGO_VERSION)/hugo_$(HUGO_VERSION)_$(HUGO_OS).tar.gz -L --create-dirs -o $(OX_HUGO_ELPA)hugo.tar.gz
|
|
|
@tar xf $(OX_HUGO_ELPA)hugo.tar.gz -C $(OX_HUGO_ELPA)
|
|
|
@rm -f $(OX_HUGO_ELPA)hugo.tar.gz
|
|
|
endif
|
|
|
@$(HUGO) version
|
|
|
|
|
|
hugo: vcheck
|
|
|
@cd $(HUGO_BASE_DIR) && $(HUGO) --baseURL=$(HUGO_BASE_URL) $(HUGO_ARGS)
|
|
|
|
|
|
doc_site:
|
|
|
@$(MAKE) hugo HUGO_BASE_DIR=.
|
|
|
|
|
|
serve server: vcheck
|
|
|
@echo "Serving the site on $(HUGO_BASE_URL):$(PORT) .."
|
|
|
@cd $(HUGO_BASE_DIR) && $(HUGO) server --baseURL=$(HUGO_BASE_URL) --port $(PORT) --buildDrafts --buildFuture --navigateToChanged
|
|
|
|
|
|
# Run the md1 rules in loop on all of $(org_files)
|
|
|
# https://stackoverflow.com/a/37748952/1219634
|
|
|
md: $(org_files)
|
|
|
$(org_files):
|
|
|
@$(MAKE) md1 ORG_FILE=$@ TIMEZONE=UTC # Use UTC/Universal time zone for tests
|
|
|
|
|
|
doc_md:
|
|
|
@echo "[Doc Site] Generating use-package Documentation Site content .."
|
|
|
@$(MAKE) md1 ORG_FILE=../use-package.org
|
|
|
@echo "[Doc Site] Done"
|
|
|
|
|
|
# doc_gh:
|
|
|
# @echo "[GitHub Docs] Generating README.org and CONTRIBUTING.org for GitHub .."
|
|
|
# @$(MAKE) emacs-batch FUNC=use-package-export-gh-doc ORG_FILE=./doc/github-files.org
|
|
|
# @echo "[GitHub Docs] Done"
|
|
|
|
|
|
doc: doc_md doc_site
|
|
|
|
|
|
ctemp:
|
|
|
@find $(USE_PACKAGE_DOC_SITE_DIR)/content -name "*.*~" -delete
|
|
|
|
|
|
clean: ctemp
|
|
|
@find ./content -name "*.md" -delete
|
|
|
@find ./content -name "issues" -delete
|
|
|
@rm -rf $(USE_PACKAGE_DOC_SITE_DIR)/public
|
|
|
@rm -rf $(OX_HUGO_ELPA)
|
|
|
|
|
|
# Set a make variable during rule execution
|
|
|
# https://stackoverflow.com/a/1909390/1219634
|
|
|
|
|
|
# Check if an executable exists
|
|
|
# https://stackoverflow.com/a/34756868/1219634
|