#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: src/development/getconf.sh FILENAME src/development/getconf.sh -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message FILENAME the name of the input file, also to be used as URL. Separate the content from the "frontmatter", and emit the selected one, given the FILENAME. Examples: Get the "frontmatter" of src/f.conf: $ src/development/getconf.sh src/f.md > src/f.conf EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) . src/development/lib.sh FILENAME="${1:-}" eval "$(assert_arg "$FILENAME" 'FILENAME')" escape() { sed 's|\([`"$]\)|\\\1|g' } { tee "$FILENAME".tmp < src/lib/base-conf DELIMITER=0 while read -r line; do if [ "$line" = '---' ]; then DELIMITER=$((DELIMITER + 1)) continue fi if [ "$DELIMITER" = 2 ]; then break fi if [ -z "$line" ]; then continue fi KEY="$( printf '%s' "$line" | cut -d: -f1)" VALUE="$(printf '%s' "$line" | cut -d: -f2- | sed 's|^ ||' | escape)" printf '%s="%s"\n' "$KEY" "$VALUE" done < "$FILENAME" | tee -a "$FILENAME".tmp # shellcheck source=/dev/null . "$FILENAME".tmp cat src/lib/base."${lang:?}".conf # shellcheck source=/dev/null . src/lib/base."$lang".conf title="${title:-"$site_name"}" url_part="$(printf '%s' "${FILENAME%.md}.html" | sed 's|^src/content/||')" printf 'title="%s"\n' "$(printf '%s' "$title" | escape)" printf 'title_html="%s"\n' "$(printf '%s' "$title" | htmlesc | escape)" printf 'filename="%s"\n' "$FILENAME" printf 'url_part="%s"\n' "$url_part" printf 'url="%s"\n' "$(url-for "$url_part" | absolute)" printf 'date_formatted="%s"\n' "$(LANG="$lang" date -d "${date:?}" +"${date_fmt:?}" | escape)" printf 'mailto_uri="%s%s"\n' "${mailto_uri_prefix:?}" "$(uri "$title")" printf 'discussions_url="%s%s"\n' "${discussions_url_prefix:?}" "$(uri "$title")" printf 'sourcecode_url="%s%s"\n' "${sourcecode_url_prefix:?}" "$FILENAME" printf 'lang_url="%s"\n' "$(url-for "$lang"/)" printf 'style_url="%s"\n' "$(url-for 'style.css')" printf 'favicon_url="%s"\n' "$(url-for 'favicon.svg')" rm -f "$FILENAME".tmp } | grep . | sed 's|^|export |'