From a48d05d1d5fcff414359c8ba6cc8f38467aebdeb Mon Sep 17 00:00:00 2001 From: Volpeon Date: Mon, 10 May 2021 16:41:05 +0200 Subject: Refactoring to fully take advantage of Make --- scripts/build_content.sh | 222 ----------------------------------------------- 1 file changed, 222 deletions(-) delete mode 100755 scripts/build_content.sh (limited to 'scripts/build_content.sh') diff --git a/scripts/build_content.sh b/scripts/build_content.sh deleted file mode 100755 index 3dea44f..0000000 --- a/scripts/build_content.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/bash - -source "site.defaults.conf" - -get_filters() { - local filters_args="" - - mapfile -d $'\0' filters < <(find $FILTERS_DIR \ - -type f \ - -name "*.lua" ! -name ".*" \ - -print0) - - for file in "${filters[@]}"; do - filters_args="$filters_args --lua-filter $file" - done - - echo "$filters_args" -} - -FILTERS=$(get_filters) - -get_filename_out() { - local filename=$1 - filename=${filename#"$CONTENT_DIR"} - echo "$OUTPUT_DIR$filename" -} - -get_metadata() { - pandoc "$1" \ - -f markdown-citations \ - -t plain \ - --metadata content_dir="$CONTENT_DIR" \ - --metadata file_in="$1" \ - --metadata relative_to="$2" \ - --metadata-file metadata/metadata.yaml \ - --no-highlight \ - --template scripts/metadata_tpl.json \ - --lua-filter scripts/metadata_filter.lua -} - -get_content() { - pandoc "$1" \ - -f markdown-citations \ - -t markdown \ - --metadata content_dir="$CONTENT_DIR" \ - --metadata file_in="$1" \ - --metadata-file metadata/metadata.yaml \ - --no-highlight \ - --lua-filter scripts/metadata_filter.lua -} - -get_subpages_metadata() { - local base_dir_in=${1%/index.md} - local relative_to="$2" - if [ -z "$2" ]; then - relative_to="$1" - fi - local child_pages=() - - if [ -d "$base_dir_in" ]; then - mapfile -d $'\0' child_pages < <(find "$base_dir_in" \ - -maxdepth 2 \ - -type f \ - -wholename "$base_dir_in/*/index.md" \ - ! -name "_*.md" \ - -print0) - fi - - local pages="[]" - local subsections="{}" - - for file_in in "${child_pages[@]}"; do - local subsection=$(basename "${file_in%/index.md}") - local content=$(get_content "$file_in" | sed -z 's/\\/\\\\/g;s/\n/\\n/g;s/"/\\"/g') - local metadata=$(get_metadata "$file_in" | jq "{ \ - file_out: .file_out, \ - url: .url, \ - author: .author, \ - title: .title, \ - date: .date, \ - last_update: .last_update, \ - category: .category, \ - preview: .preview, \ - content: \"$content\" \ - } | del(.[] | nulls)") - local title=$(echo "$metadata" | jq ".title") - local subpages="[]" - - if [ -z "$2" ]; then - subpages=$(get_subpages_metadata "$file_in" "$1" | jq ".pages") - fi - - pages=$(echo "$pages" | jq ". += [ $metadata ]") - subsections=$(echo "$subsections" | jq ". += { \"$subsection\": { title: $title, pages: $subpages } }") - done - - echo "{ \"pages\": $pages, \"subsections\": $subsections }" -} - -handle () { - if [ "${1#*.}" = "md" ]; then - local included_metadata=$(get_metadata "$1") - local file_out=$(echo "$included_metadata" | jq -r .file_out) - file_out="$OUTPUT_DIR${file_out#/}" - local create_feed=$(echo "$included_metadata" | jq -r .create_feed) - - mkdir -p $(dirname "$file_out") - - echo -e "\033[0;32m[COMPILE ]\033[0m $1 -> $file_out" - - echo -e "\033[0;90m[COMPILE ]\033[0m Getting subpages" - - local added_metadata=$(get_subpages_metadata "$1") - - local meta_file=$(mktemp) - - echo "$added_metadata" > "$meta_file" - - if [ "$create_feed" = "true" ]; then - echo -e "\033[0;90m[COMPILE ]\033[0m Creating feed" - - pandoc "$1" \ - -f markdown-citations \ - -t html5 \ - --no-highlight \ - --template "${TEMPLATES_DIR}feed.xml" \ - -o "${file_out%.html}.xml" \ - --metadata content_dir="$CONTENT_DIR" \ - --metadata file_in="$1" \ - --metadata page_type=feed \ - --metadata-file metadata/metadata.yaml \ - --metadata-file "$meta_file" \ - --lua-filter scripts/metadata_filter.lua - fi - - echo -e "\033[0;90m[COMPILE ]\033[0m Creating page" - - pandoc "$1" \ - -f markdown-citations \ - -t html5 \ - --no-highlight \ - --template "${TEMPLATES_DIR}base.html" \ - -o "$file_out" \ - --metadata content_dir="$CONTENT_DIR" \ - --metadata file_in="$1" \ - --metadata-file metadata/metadata.yaml \ - --metadata-file "$meta_file" \ - --lua-filter scripts/metadata_filter.lua \ - $FILTERS - - # echo "$(pandoc "$1" \ - # -f markdown-citations \ - # -t plain \ - # --no-highlight \ - # --template scripts/metadata_tpl.json \ - # --metadata content_dir="$CONTENT_DIR" \ - # --metadata file_in="$1" \ - # --metadata-file metadata/metadata.yaml \ - # --metadata-file "$meta_file" \ - # --lua-filter scripts/metadata_filter.lua \ - # $FILTERS)" - - rm "$meta_file" - - echo -e "\033[0;90m[COMPILE ]\033[0m Done" - else - local file_out=$(get_filename_out "$1") - - mkdir -p $(dirname "$file_out") - - echo -e "\033[0;32m[COPY ]\033[0m $1 -> $file_out" - - cp "$1" "$file_out" - fi -} - -mdfilter="" -if [ "$LIVE" != true ]; then - mdfilter="! -name _*.md" -fi - -if [ -z "$1" ]; then - find "$CONTENT_DIR" \ - -type f \ - ! -name ".*" \ - $mdfilter \ - | while read file_in - do - handle "$file_in" - done -elif [ "$1" = "all_md" ]; then - find "$CONTENT_DIR" \ - -type f \ - -name "*.md" \ - ! -name ".*" \ - $mdfilter \ - | while read file_in - do - handle "$file_in" - done -elif [ "$1" = "single" ]; then - if [ -z "$2" ]; then - echo -e "\033[0;31m[ERROR ]\033[0m \"single\" operation requires file argument" - else - filename=$(basename "$2") - if [ "${filename:0:1}" != "_" ]; then - handle "$2" - fi - fi -elif [ "$1" = "delete" ]; then - if [ -z "$2" ]; then - echo -e "\033[0;31m[ERROR ]\033[0m \"delete\" operation requires file argument" - else - file_out=$(get_filename_out "$2") - if [ -f "$file_out" ] || [ -d "$file_out" ]; then - echo -e "\033[0;32m[DELETE ]\033[0m $2 -> $file_out" - rm -rf $file_out - fi - fi -else - echo -e "\033[0;31m[ERROR ]\033[0m Unknown operation: \"$1\"" -fi -- cgit v1.2.3-54-g00ecf