summaryrefslogtreecommitdiff
path: root/packages/generate.source.sh
diff options
context:
space:
mode:
authorPaul Buetow <git@mx.buetow.org>2021-05-21 05:18:10 +0100
committerPaul Buetow <git@mx.buetow.org>2021-05-21 05:18:10 +0100
commit85df071aa1a5aa73328fdc5969d3ca0ed9df2c08 (patch)
treeec8c11c9e1ad5dfa02c15e57212b239b75e52c87 /packages/generate.source.sh
parent9dbd7f008192fd506bf642944232334fad0ed55c (diff)
add readme
Diffstat (limited to 'packages/generate.source.sh')
-rw-r--r--packages/generate.source.sh160
1 files changed, 0 insertions, 160 deletions
diff --git a/packages/generate.source.sh b/packages/generate.source.sh
deleted file mode 100644
index 98cd2154..00000000
--- a/packages/generate.source.sh
+++ /dev/null
@@ -1,160 +0,0 @@
-# Generate a HTML or Markdown link from given Gemtext link.
-generate::make_link () {
- local -r what="$1"; shift
- local -r line="${1/=> }"; shift
- local link
- local descr
-
- while read -r token; do
- if [ -z "$link" ]; then
- link="$token"
- elif [ -z "$descr" ]; then
- descr="$token"
- else
- descr="$descr $token"
- fi
- done < <(echo "$line" | tr ' ' '\n')
-
- if $GREP -E -q "$IMAGE_PATTERN" <<< "$link"; then
- if [[ "$what" == md ]]; then
- md::make_img "$link" "$descr"
- else
- html::make_img "$link" "$(html::encode "$descr")"
- fi
- return
- fi
-
- if [[ "$what" == md ]]; then
- md::make_link "$link" "$descr"
- else
- html::make_link "$link" "$(html::encode "$descr")"
- fi
-}
-
-# Add other docs (e.g. images, videos) from Gemtext to output format.
-generate::fromgmi_add_docs () {
- local -r src="$1"; shift
- local -r format="$1"; shift
- local -r dest=${src/gemtext/$format}
- local -r dest_dir=$(dirname "$dest")
-
- if [[ ! -d "$dest_dir" ]]; then
- mkdir -p "$dest_dir"
- fi
- cp "$src" "$dest"
- git::add "$format" "$dest"
-}
-
-# Remove docs from output format which aren't present in Gemtext anymore.
-generate::fromgmi_cleanup_docs () {
- local -r src="$1"; shift
- local -r format="$1"; shift
- local dest=${src/.$format/.gmi}
- dest=${dest/$format/gemtext}
-
- if [[ ! -f "$dest" ]]; then
- git::rm "$format" "$src"
- fi
-}
-
-# Convert the Gemtext Atom feed to a HTML Atom feed.
-generate::convert_gmi_atom_to_html_atom () {
- local -r format="$1"; shift
- if [[ "$format" != html ]]; then
- return
- fi
-
- log INFO 'Converting Gemtext Atom feed to HTML Atom feed'
-
- $SED 's|.gmi|.html|g; s|gemini://|https://|g' \
- < $CONTENT_BASE_DIR/gemtext/gemfeed/atom.xml \
- > $CONTENT_BASE_DIR/html/gemfeed/atom.xml
-
- git::add "$format" "$CONTENT_BASE_DIR/html/gemfeed/atom.xml"
-}
-
-# Internal helper function for generate::fromgmi
-generate::_fromgmi () {
- local -r src="$1"; shift
- local -r format="$1"; shift
- local dest=${src/gemtext/$format}
- dest=${dest/.gmi/.$format}
- local dest_dir=$(dirname "$dest")
-
- if [[ ! -d "$dest_dir" ]]; then
- mkdir -p "$dest_dir"
- fi
-
- if [[ "$format" == html ]]; then
- cat "$HTML_HEADER" > "$dest.tmp"
- 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
- $SED -i "s|%%TITLE%%|$title|g" "$dest.tmp"
- mv "$dest.tmp" "$dest"
-
- git::add "$format" "$dest"
-}
-
-# Generate a given output format from a Gemtext file.
-generate::fromgmi () {
- local -i num_gmi_files=0
- local -i num_doc_files=0
-
- log INFO "Generating $* from Gemtext"
-
- while read -r src; do
- num_gmi_files=$(( num_gmi_files + 1 ))
- for format in "$@"; do
- generate::_fromgmi "$src" "$format"
- done
- done < <(find "$CONTENT_BASE_DIR/gemtext" -type f -name \*.gmi)
-
- log INFO "Converted $num_gmi_files Gemtext files"
-
- # Add non-.gmi files to html dir.
- log VERBOSE "Adding other docs to $*"
-
- while read -r src; do
- num_doc_files=$(( num_doc_files + 1 ))
- 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)$')
-
- log INFO "Added $num_doc_files other documents to each of $*"
-
- # Add atom feed for HTML
- for format in "$@"; do
- generate::convert_gmi_atom_to_html_atom "$format"
- done
-
- # Remove obsolete files from ./html/.
- # Note: The _config.yml is the config file for GitHub pages (md format).
- for format in "$@"; do
- find "$CONTENT_BASE_DIR/$format" -type f |
- $GREP -E -v '(\.git.*|_config.yml)$'|
- while read -r src; do
- generate::fromgmi_cleanup_docs "$src" "$format"
- done
- done
-
- if [[ -z "$GIT_COMMIT_MESSAGE" ]]; then
- GIT_COMMIT_MESSAGE='Publishing new version'
- fi
- git::commit gemtext "$GIT_COMMIT_MESSAGE"
- git::commit meta "$GIT_COMMIT_MESSAGE"
-
- for format in "$@"; do
- git::commit "$format" "$GIT_COMMIT_MESSAGE"
- log INFO "$format can be found in $CONTENT_BASE_DIR/$format now"
- done
-}