From 66d48a7a4c98383e5baef20d352a3d2e4e681a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Sat, 7 Aug 2021 18:20:38 +0200 Subject: bin: Generation scaffold --- bin/ssg-template | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 bin/ssg-template (limited to 'bin/ssg-template') diff --git a/bin/ssg-template b/bin/ssg-template new file mode 100644 index 0000000..d246028 --- /dev/null +++ b/bin/ssg-template @@ -0,0 +1,166 @@ +#!/bin/sh + +SRC_FILE="${1}" + +_echo_ifset() { + [ ! -z "${1}" ] && echo "${1}" +} + +_get_value() { + # 1: filename + # 2: key + # stdout: value + local value=$(lowdown -T ms -X "${2}" "${1}" 2>/dev/null) + echo "${value:-${3}}" + return "${?}" +} + +_get_value_date() { + _get_value "${1}" "${2}" "1970-01-01" +} + +_get_out_path() { + # 1: filename + # stdout: filename + echo "${1}" | sed -e 's/^src/out/g' -e 's/.md$/.html/g' -e 's/_//g' +} + +_get_final_path() { + # 1: filename + # stdout: filename + _get_out_path "${1}" | sed 's/^out\///g' +} + +_get_title() { + # 1: filename + basename "${1}" | sed 's/\..*//g' | tr - " " +} + +_get_date_human() { + # 1: filename + date -j -f "%Y-%m-%d" $(_get_value_date ${1} "date") +"%B %d, %Y" +} + +_get_index_files() { + # 1: filename + local path + + path=$(_get_value "${1}" index) + find "src/${path}" -mindepth 1 -maxdepth 1 +} + +_sort_index_per_date() { + # 1: filename + local files + local file + local date + + for file in $(_get_index_files "${1}"); do + date=$(_get_value_date "${file}" "date") + files="${files} ${date}@${file}" + done + + echo ${files} | tr " " "\n" | sort -rn | cut -d "@" -f 2 +} + +_get_filetype() { + # 1: filename + local filetype + + filetype=$(ls -ld "${1}" | cut -c 1) + + case "${filetype}" in + -) + filetype="file" + ;; + d) + filetype="directory" + ;; + esac + + echo "${filetype}" +} + +_get_chapters() { + # 1: filename + grep "^#" "${1}" | sed 's/# /#_/g' +} + +_get_chapter_title() { + # 1: chapter + echo "${1}" | sed -e 's/#_//' -e 's/#//g' +} + +_parse_option() { + # 1: metadata + # 2: key + echo "${metadata}" | grep "^${2}" +} + +_cleanup_tmp_file() { + [ -f "${1}" ] && rm "${1}" +} + +_parse_metadata() { + # 1: filename + sed -n '/^$/q;p' "${file}" | grep "^.*: .*$" +} + +_render_metadata() { + # 1: filename + # 2: output + _ENABLED_METADATA="date author" + local key + local value + + echo "" +} + +_render_index() { + # 1: filename + # 2: out + # 3: path + local file + local path + local title + + echo "" +} + +_render_toc() { + local chapter + local chapter_title + + echo "" +} -- cgit v1.2.3