diff options
author | Sylvain Gauthier <s94.gauthier@laposte.net> | 2020-10-11 00:26:11 +0200 |
---|---|---|
committer | Sylvain Gauthier <s94.gauthier@laposte.net> | 2020-10-11 00:26:11 +0200 |
commit | 69a492af19a01838fffb20e1f18a4af5b2b0a88c (patch) | |
tree | fe037454d9a0f05ca3bb517956a0ea73f4e3df2c /blog | |
parent | 70177251a25c859de453f43b650ffc63445f1904 (diff) |
rename blog -> blogit
Diffstat (limited to 'blog')
-rwxr-xr-x | blog | 160 |
1 files changed, 0 insertions, 160 deletions
@@ -1,160 +0,0 @@ -#!/usr/bin/make -f - -BLOG := $(MAKE) -f $(lastword $(MAKEFILE_LIST)) --no-print-directory -ifneq ($(filter-out help,$(MAKECMDGOALS)),) -include config -endif - -# The following can be configured in config -BLOG_DATE_FORMAT_INDEX ?= %x -BLOG_DATE_FORMAT ?= %x %X - - -.PHONY: help init build deploy clean - -ARTICLES = $(shell git ls-tree HEAD --name-only -- articles/ 2>/dev/null) -TAGFILES = $(patsubst articles/%,tags/%,$(ARTICLES)) - -help: - $(info blog init|build|deploy|clean) - -init: - mkdir -p articles data templates - printf '<!DOCTYPE html><html><head><title>$$TITLE</title></head><body>' > templates/header.html - printf '</body></html>' > templates/footer.html - printf '' > templates/index_header.html - printf '<p>Tags:' > templates/tag_list_header.html - printf '<a href="$$URL">$$NAME</a>' > templates/tag_entry.html - printf ', ' > templates/tag_separator.html - printf '</p>' > templates/tag_list_footer.html - printf '<h2>Articles</h2><ul>' > templates/article_list_header.html - printf '<li><a href="$$URL">$$DATE $$TITLE</a></li>' > templates/article_entry.html - printf '' > templates/article_separator.html - printf '</ul>' > templates/article_list_footer.html - printf '' > templates/index_footer.html - printf '' > templates/tag_index_header.html - printf '' > templates/tag_index_footer.html - printf '<h1>$$TITLE</h1>' > templates/article_header.html - printf '' > templates/article_footer.html - printf 'blog\n' > .git/info/exclude - -build: blog/index.html tagpages $(patsubst articles/%,blog/%.html,$(ARTICLES)) - -deploy: build - rsync -rLtvz blog/ data/ $(BLOG_REMOTE) - -clean: - rm -rf blog tags - -config: - printf 'BLOG_REMOTE:=%s\n' \ - '$(shell printf "Blog remote (eg: host:/var/www/html): ">/dev/tty; head -n1)' \ - > $@ - -tags/%: articles/% - mkdir -p tags - grep -i '^; *tags:' "$<" | cut -d: -f2- | sed 's/ */\n/g' | sed '/^$$/d' | sort -u > $@ - -blog/index.html: $(ARTICLES) $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header index_header tag_list_header tag_entry tag_separator tag_list_footer article_list_header article_entry article_separator article_list_footer index_footer footer)) - mkdir -p blog - TITLE="index"; \ - export TITLE; \ - envsubst < templates/header.html > $@; \ - envsubst < templates/index_header.html >> $@; \ - envsubst < templates/tag_list_header.html >> $@; \ - first=true; \ - for t in $(shell cat $(TAGFILES) | sort -u); do \ - "$$first" || envsubst < templates/tag_separator.html; \ - NAME="$$t" \ - URL="@$$t.html" \ - envsubst < templates/tag_entry.html; \ - first=false; \ - done >> $@; \ - envsubst < templates/tag_list_footer.html >> $@; \ - envsubst < templates/article_list_header.html >> $@; \ - first=true; \ - for f in $(ARTICLES); do \ - printf '%s ' "$$f"; \ - git log --diff-filter=A --date="format:%s $(BLOG_DATE_FORMAT_INDEX)" --pretty=format:'%ad%n' -- "$$f"; \ - done | sort -k2nr | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE; do \ - "$$first" || envsubst < templates/article_separator.html; \ - URL="`printf '%s' "\$$FILE" | sed 's,^articles/,,'`.html" \ - DATE="$$DATE" \ - TITLE="`head -n1 "\$$FILE"`" \ - envsubst < templates/article_entry.html; \ - first=false; \ - done >> $@; \ - envsubst < templates/article_list_footer.html >> $@; \ - envsubst < templates/index_footer.html >> $@; \ - envsubst < templates/footer.html >> $@; \ - - -blog/tag/%.html: $(ARTICLES) $(addprefix templates/,$(addsuffix .html,header tag_header index_entry tag_footer footer)) - -.PHONY: tagpages -tagpages: $(TAGFILES) - +$(BLOG) $(patsubst %,blog/@%.html,$(shell cat $(TAGFILES) | sort -u)) - -blog/@%.html: $(TAGFILES) $(addprefix templates/,$(addsuffix .html,header tag_index_header tag_list_header tag_entry tag_separator tag_list_footer article_list_header article_entry article_separator article_list_footer tag_index_footer footer)) - mkdir -p blog - TITLE="Articles tagged $*"; \ - TAGS="$*"; \ - export TITLE; \ - export TAGS; \ - envsubst < templates/header.html > $@; \ - envsubst < templates/tag_index_header.html >> $@; \ - envsubst < templates/article_list_header.html >> $@; \ - first=true; \ - for f in $(shell grep -FH '$*' $(TAGFILES) | sed 's,^tags/\([^:]*\):.*,articles/\1,'); do \ - printf '%s ' "$$f"; \ - git log --diff-filter=A --date="format:%s $(BLOG_DATE_FORMAT_INDEX)" --pretty=format:'%ad%n' -- "$$f"; \ - done | sort -k2nr | cut -d" " -f1,3- | while IFS=" " read -r FILE DATE; do \ - "$$first" || envsubst < templates/article_separator.html; \ - URL="`printf '%s' "\$$FILE" | sed 's,^articles/,,'`.html" \ - DATE="$$DATE" \ - TITLE="`head -n1 "\$$FILE"`" \ - envsubst < templates/article_entry.html; \ - first=false; \ - done >> $@; \ - envsubst < templates/article_list_footer.html >> $@; \ - envsubst < templates/tag_index_footer.html >> $@; \ - envsubst < templates/footer.html >> $@; \ - - -blog/%.html: articles/% $(addprefix templates/,$(addsuffix .html,header article_header article_footer footer)) - mkdir -p blog - TITLE="$(shell head -n1 $<)"; \ - export TITLE; \ - DATE_POSTED="$(shell git log --diff-filter=A --date="format:$(BLOG_DATE_FORMAT)" --pretty=format:'%ad' -- "$<")"; \ - export DATE_POSTED; \ - DATE_EDITED="$(shell git log -n 1 --date="format:$(BLOG_DATE_FORMAT)" --pretty=format:'%ad' -- "$<")"; \ - export DATE_EDITED; \ - TAGS="$(shell grep -i '^; *tags:' "$<" | cut -d: -f2- | paste -sd ',')"; \ - export TAGS; \ - envsubst < templates/header.html > $@; \ - envsubst < templates/article_header.html >> $@; \ - sed -e 1d \ - -e '/^;/d' \ - -e 's/</\</g' \ - -e 's/>/\>/g' \ - -e '/^```$$/{s,.*,,;x;p;/^<\/code>/d;s,.*,<pre><code>,;bT}' \ - -e 'x;/<\/code>/{x;$$G;p;d};x' \ - -e '/^####/{s,^####,<h4>,;s,$$,</h4>,;H;s,.*,,;x;p;d}' \ - -e '/^###/{s,^###,<h3>,;s,$$,</h3>,;H;s,.*,,;x;p;d}' \ - -e '/^##/{s,^##,<h2>,;s,$$,</h2>,;H;s,.*,,;x;p;d}' \ - -e '/^#/{s,^#,<h1>,;s,$$,</h1>,;H;s,.*,,;x;p;d}' \ - -e 's,`\([^`]*\)`,<q>\1</q>,g' \ - -e 's,\*\*\(\([^*<>][^*<>]*\*\?\)*\)\*\*,<b>\1</b>,g' \ - -e 's,\*\([^*<>][^*<>]*\)\*,<i>\1</i>,g' \ - -e 's,!\[\([^]]*\)\](\([^)]*\)),<img src="\2" alt="\1"/>,g' \ - -e 's,\[\([^]]*\)\](\([^)]*\)),<a href="\2">\1</a>,g' \ - -e '/^- /{s,^- ,<li>,;s,$$,</li>,;x;/^<\/ul>/{x;bL};p;s,.*,<ul>,;bT}' \ - -e '/^[1-9][0-9]*\. /{s,^[0-9]*\. ,<li>,;s,$$,</li>,;x;/^<\/ol>/{x;bL};p;s,.*,<ol>,;bT}' \ - -e '/^$$/{x;/^$$/d;p;d}' \ - -e 'x;/^$$/{s,.*,<p>,;bT};x' \ - -e ':L;$$G;p;d' \ - -e ':T;p;:t;s,<\([^/>][^>]*\)>\(\(<[^/>][^>]*>\)*\),\2</\1>,;/<[^\/>]/bt;x;/^$$/{$${x;p};d};bL' \ - "$<" | envsubst >> $@; \ - envsubst < templates/article_footer.html >> $@; \ - envsubst < templates/footer.html >> $@; \ - |