Update org-jekyll.mk

This commit is contained in:
Correl Roush 2014-10-30 22:25:52 -04:00
parent a0f7623be4
commit a8bdee4a8c
2 changed files with 186 additions and 156 deletions

View file

@ -5,4 +5,6 @@ SITE_AUTHOR_EMAIL = correl@gmail.com
SITE_TWITTER = correlr
SITE_GITHUB = correl/sicp
BABEL_LANGUAGES = scheme dot
include org-jekyll.mk

View file

@ -13,23 +13,28 @@ SITE_GITHUB ?=
ORG_DIR ?= .
BUILD_DIR ?= _build
SITE_DIR ?= _site
OUTPUT_DIR = $(BUILD_DIR)/_org
CODE_DIR = $(BUILD_DIR)/_src
BABEL_LANGUAGES ?= emacs-lisp
JEKYLL_CONFIG = $(BUILD_DIR)/_config.yml
JEKYLL_OPTS += -s $(BUILD_DIR)
ORG_BUILD_DIR = $(BUILD_DIR)/_org
ORG_ASSET_DIR = $(BUILD_DIR)/org
targets = $(BUILD_DIR) $(SITE_DIR)
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
org_files := $(patsubst %.org,$(OUTPUT_DIR)/%.html,$(notdir $(wildcard $(ORG_DIR)/*.org)))
tangle_org_files := $(shell grep -il '+BEGIN_SRC .* :tangle yes' $(ORG_DIR)/*.org)
tangle_output_files := $(patsubst %.org,$(CODE_DIR)/%.src.txt,$(notdir $(tangle_org_files)))
tangle_tmp := $(shell tempfile -s .org)
org_files := $(wildcard $(ORG_DIR)/*.org)
tangle_org_files := $(addprefix $(ORG_ASSET_DIR)/,$(notdir $(shell grep -l ':tangle ' $(org_files))))
org_asset_files := $(addprefix $(ORG_ASSET_DIR)/,$(notdir $(org_files)))
html_files := $(patsubst %.org,$(ORG_BUILD_DIR)/%.html,$(notdir $(org_files)))
load_languages := $(shell echo "$(BABEL_LANGUAGES)" | sed -r 's/(\S+)/\(\1 . ''t\)/g')
V ?= 0
org_verbose_0 = @echo " ORG " $(?F);
stderr_verbose_0 = 2>/dev/null
stderr_verbose = $(stderr_verbose_$(V))
org_verbose_0 = @echo " ORG " $<;
org_verbose = $(org_verbose_$(V))
tangle_verbose_0 = @echo " CODE " $(?F);
tangle_verbose_0 = @echo " CODE " $(1);
tangle_verbose = $(tangle_verbose_$(V))
jekyll_verbose_0 = @echo " BUILD jekyll";
jekyll_verbose = $(jekyll_verbose_$(V))
@ -40,12 +45,12 @@ serve_verbose = $(jekyll_verbose_$(V))
default: all
all: jekyll
all: build
clean:
rm -rf $(targets)
$(JEKYLL_CONFIG):
jekyll-config:
$(config_verbose) echo "\
# Site settings \n\
name: \"$(SITE_NAME)\" \n\
@ -64,37 +69,67 @@ permalinks: pretty \n\
collections: \n\
org: \n\
output: true \n\
src: \n\
output: true \n\
\n\
defaults: \n\
- scope: \n\
path: \"\"\n\
type: \"org\" \n\
values: \n\
layout: \"page\" \n\
author: \"$(SITE_AUTHOR)\" \n\
" > $@
layout: \"org\" \n\
" > $(JEKYLL_CONFIG)
jekyll: assets org-html org-code $(JEKYLL_CONFIG)
build: assets org jekyll-config
$(jekyll_verbose) jekyll build $(JEKYLL_OPTS)
serve: assets org-html org-code $(JEKYLL_CONFIG)
serve: assets org jekyll-config
$(serve_verbose) jekyll serve $(JEKYLL_OPTS)
$(BUILD_DIR):
mkdir -p $@
org: $(org_asset_files) $(html_files)
$(OUTPUT_DIR):
mkdir -p $@
$(ORG_BUILD_DIR)/%.html: $(ORG_ASSET_DIR)/%.html
@mkdir -p $(@D)
@mv $< $@
$(CODE_DIR):
mkdir -p $@
$(ORG_ASSET_DIR)/%.org: $(ORG_DIR)/%.org
@mkdir -p $(@D)
@cp $< $@
$(OUTPUT_DIR)/%.html: $(ORG_DIR)/%.org
define tangle
$(tangle_verbose) emacs --batch -u ${USER} \
--eval " \
(progn \
(require 'org) \
(org-babel-do-load-languages \
'org-babel-load-languages \
'($(load_languages))) \
(org-babel-tangle-file \"$(1)\"))" $(stderr_verbose)
endef
$(ORG_ASSET_DIR)/%.html: $(ORG_ASSET_DIR)/%.org
$(if $(shell grep ':tangle ' $<),$(call tangle,$<))
$(org_verbose) emacs --batch -u ${USER} --eval " \
(progn \
(require 'org) \
(require 'ox) \
\
(org-babel-do-load-languages \
'org-babel-load-languages \
'($(load_languages))) \
(setq org-confirm-babel-evaluate nil) \
\
(defun org-jekyll.mk/inject-frontmatter (string backend info) \
(when (and (org-export-derived-backend-p backend 'html) \
(not (eq 0 (string-match \"---\" string)))) \
(let ((title (org-export-data (plist-get info :title) info)) \
(author (org-export-data (plist-get info :author) info))) \
(replace-regexp-in-string (rx buffer-start) \
(concat \"---\\n\" \
(format \"title: \\\"%s\\\"\\n\" title) \
(format \"author: \\\"%s\\\"\\n\" author) \
\"---\\n\") \
string)))) \
(add-to-list 'org-export-filter-final-output-functions \
'org-jekyll.mk/inject-frontmatter) \
\
(setq org-publish-project-alist \
'( \
@ -102,7 +137,7 @@ $(OUTPUT_DIR)/%.html: $(ORG_DIR)/%.org
:base-directory \".\" \
:base-extension \"org\" \
\
:publishing-directory \"$(abspath $(OUTPUT_DIR))\" \
:publishing-directory \"$(abspath $(@D))\" \
:recursive t \
:publishing-function org-html-publish-to-html \
:headline-levels 4 \
@ -110,147 +145,140 @@ $(OUTPUT_DIR)/%.html: $(ORG_DIR)/%.org
:html-extension \"html\" \
:htmlized-source t \
:with-toc nil \
:body-only t) \
:body-only t \
:babel-evaluate t) \
(\"jekyll\" :components (\"org-jekyll\")))) \
\
(find-file \"$<\") \
(org-publish-current-file 't)) \
" 2>/dev/null
$(CODE_DIR)/%.src.txt: $(ORG_DIR)/%.org
@sed "s/:tangle yes/:tangle $(subst /,\/,$(abspath $@))/g" "$<" > $(tangle_tmp)
$(tangle_verbose) emacs --batch -u ${USER} \
--eval "(require 'org)" \
--eval "(org-babel-tangle-file \"$(tangle_tmp)\")" 2>/dev/null ;
@rm $(tangle_tmp)
org-html: $(OUTPUT_DIR) $(org_files)
org-code: $(CODE_DIR) $(tangle_output_files)
" $(stderr_verbose)
.PHONY: assets
assets_verbose_0 = @echo Extracting assets to $(BUILD_DIR);
assets_verbose = $(assets_verbose_$(V))
assets: $(BUILD_DIR)
assets:
@mkdir -p $(BUILD_DIR)
$(assets_verbose) echo '' \
'begin-base64 664 -\n'\
'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\n'\
'====\n'\
| sed 's/^ //' | uudecode | tar zx -C $(BUILD_DIR)