summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2022-07-02 18:06:13 +0300
committerPaul Buetow <paul@buetow.org>2022-07-02 18:06:13 +0300
commit30f00fa694280a7eaa23c20affba22bd14b91739 (patch)
treee740fee1f38945578b1c841662134c9e2fb2aadd /lib
parent4568e15116c06897986090f1b73a419caf129002 (diff)
refactor the HTML extras sub-directory
Diffstat (limited to 'lib')
-rw-r--r--lib/generate.source.sh64
-rw-r--r--lib/html.source.sh21
2 files changed, 49 insertions, 36 deletions
diff --git a/lib/generate.source.sh b/lib/generate.source.sh
index 2e1c6ef..b2dafbc 100644
--- a/lib/generate.source.sh
+++ b/lib/generate.source.sh
@@ -71,13 +71,19 @@ generate::convert_gmi_atom_to_html_atom () {
}
# Internal helper function for generate::fromgmi
-generate::_fromgmi () {
+generate::_to_output_format () {
local -r src="$1"; shift
local -r format="$1"; shift
+
local dest=${src/gemtext/$format}
dest=${dest/.gmi/.$format}
local dest_dir=$(dirname "$dest")
+ local title=$($SED -n '/^# / { s/# //; p; q; }' "$src" | tr '"' "'")
+ if [[ -z "$title" ]]; then
+ title="$SUBTITLE"
+ fi
+
if [[ ! -d "$dest_dir" ]]; then
mkdir -p "$dest_dir"
fi
@@ -87,16 +93,7 @@ generate::_fromgmi () {
html::fromgmi < "$src" >> "$dest.tmp"
cat "$HTML_FOOTER" >> "$dest.tmp"
- elif [[ "$format" == md ]]; then
- md::fromgmi < "$src" >> "$dest.tmp"
- fi
-
- local title=$($SED -n '/^# / { s/# //; p; q; }' "$src" | tr '"' "'")
- if [[ -z "$title" ]]; then
- title=$SUBTITLE
- fi
-
- if [[ "$format" == html ]]; then
+ # For HTML, we can override the style sheet per directory.
local stylesheet="$(basename "$HTML_CSS_STYLE")"
local stylesheet_override="${stylesheet/.css/-override.css}"
if [[ "$CONTENT_BASE_DIR/html" != "$(dirname "$dest")" ]]; then
@@ -106,7 +103,15 @@ generate::_fromgmi () {
s|%%DOMAIN%%|$DOMAIN|g;
s|%%STYLESHEET%%|$stylesheet|g;
s|%%STYLESHEET_OVERRIDE%%|$stylesheet_override|g;" "$dest.tmp"
+
+ elif [[ "$format" == md ]]; then
+ md::fromgmi < "$src" >> "$dest.tmp"
+
+ else
+ log ERROR "Unknown output format '$format'"
+ exit 2
fi
+
mv "$dest.tmp" "$dest"
}
@@ -117,37 +122,18 @@ generate::fromgmi () {
log INFO "Generating $* from Gemtext"
+ # Add content
while read -r src; do
num_gmi_files=$(( num_gmi_files + 1 ))
log INFO "Generating output formats from $src"
for format in "$@"; do
- generate::_fromgmi "$src" "$format" &
+ generate::_to_output_format "$src" "$format" &
done
done < <(find "$CONTENT_BASE_DIR/gemtext" -type f -name \*.gmi)
- wait
+ wait
log INFO "Converted $num_gmi_files Gemtext files"
- # Add HTML extras (will be cleaned up further below)
- cp $HTML_CSS_STYLE $CONTENT_BASE_DIR/gemtext/style.css
- for section in . gemfeed notes; do
- if [[ ! -d "$CONTENT_BASE_DIR/gemtext/$section" ]]; then
- continue
- fi
-
- local override_source="./htmlextras/style-${section}-override.css"
- local override_dest="$CONTENT_BASE_DIR/gemtext/$section/style-override.css"
- if [ ! -f "$override_source" ]; then
- touch "$override_dest" # Empty override
- continue
- fi
- cp "$override_source" "$override_dest"
- done
- cp "$HTML_WEBFONT_TEXT" $CONTENT_BASE_DIR/gemtext/text.ttf
- cp "$HTML_WEBFONT_CODE" $CONTENT_BASE_DIR/gemtext/code.ttf
- cp "$HTML_WEBFONT_HANDNOTES" $CONTENT_BASE_DIR/gemtext/handnotes.ttf
- cp "$HTML_WEBFONT_TYPEWRITER" $CONTENT_BASE_DIR/gemtext/typewriter.ttf
-
# Add non-.gmi files to html dir.
log VERBOSE "Adding other docs to $*"
@@ -156,7 +142,7 @@ generate::fromgmi () {
for format in "$@"; do
generate::fromgmi_add_docs "$src" "$format" &
done
- done < <(find "$CONTENT_BASE_DIR/gemtext" -type f | $GREP -E -v '(\.git.*|\.gmi|atom.xml|\.tmp|htmlextras)$')
+ done < <(find "$CONTENT_BASE_DIR/gemtext" -type f | $GREP -E -v '(\.git.*|\.gmi|atom.xml|\.tmp)$')
wait
log INFO "Added $num_doc_files other documents to each of $*"
@@ -176,8 +162,14 @@ generate::fromgmi () {
done
wait
- # Cleanup HTML extras
- rm $CONTENT_BASE_DIR/gemtext/{style.css,*.ttf}
+ # Add extra content
+ for format in "$@"; do
+ if [[ "$format" == html ]]; then
+ log INFO "Adding HTML extras"
+ html::add_extras &
+ fi
+ done
+ wait
for format in "$@"; do
log INFO "$format can be found in $CONTENT_BASE_DIR/$format now"
diff --git a/lib/html.source.sh b/lib/html.source.sh
index d55067d..125b174 100644
--- a/lib/html.source.sh
+++ b/lib/html.source.sh
@@ -69,6 +69,27 @@ html::process_inline () {
html::process_inline_code
}
+html::add_extras () {
+ local -r html_base_dir="$CONTENT_BASE_DIR/html"
+ cp "$HTML_CSS_STYLE" "$html_base_dir/style.css"
+
+ find "$html_base_dir" -mindepth 1 -maxdepth 1 -type d | $GREP -E -v '(\.git)' |
+ while read section_dir; do
+ local override_source="./extras/html/style-$(basename $section_dir)-override.css"
+ local override_dest="$section_dir/style-override.css"
+ if [ ! -f "$override_source" ]; then
+ touch "$override_dest" # Empty override
+ else
+ cp "$override_source" "$override_dest"
+ fi
+ done
+
+ cp "$HTML_WEBFONT_TEXT" "$html_base_dir/text.ttf"
+ cp "$HTML_WEBFONT_CODE" "$html_base_dir/code.ttf"
+ cp "$HTML_WEBFONT_HANDNOTES" "$html_base_dir/handnotes.ttf"
+ cp "$HTML_WEBFONT_TYPEWRITER" "$html_base_dir/typewriter.ttf"
+}
+
# Convert Gemtext to HTML
html::fromgmi () {
local is_list=no