#!/usr/bin/env sh # Site specific settings DOMAIN="https://iiogama.0x212.com" SITE_TITLE="iiogama@0x212.com" DESCRIPTION="Some dude compulsively online, like so many others" COPYRIGHT="Copyright $(date +%Y), Thai Noodles" AUTHOR="Thai Noodles, (iiogama@0x212.com)" CONTENT_DIR="content" BLOG_DIR="$CONTENT_DIR/blog" ASSET_DIR="assets" OUTPUT_DIR="_output" mkdir -p "$OUTPUT_DIR" build_pages() { rsync -r --exclude="*.html" --exclude="*.xml" "$CONTENT_DIR/" "$OUTPUT_DIR/" #rsync -r "$ASSET_DIR/" "$OUTPUT_DIR/" find $CONTENT_DIR -type f -name "*.html" | while read -r file; do local OUTPUT_FILE="$(echo "$file" | sed "s/$CONTENT_DIR/$OUTPUT_DIR/")" if [ ! -f "$OUTPUT_FILE" ]; then printf '\n' > "$OUTPUT_FILE" printf '\n' >> "$OUTPUT_FILE" sed "s!!&$SITE_TITLE!" "templates/_head.html" >> "$OUTPUT_FILE" printf '<body>\n' >> "$OUTPUT_FILE" cat "templates/_nav.html" "$file" "templates/_footer.html" >> "$OUTPUT_FILE" printf '</body>\n' >> "$OUTPUT_FILE" printf '</html>\n' >> "$OUTPUT_FILE" fi done } #build_feeds() { # find $CONTENT_DIR -type f -name "*.xml" | while read -r file; do # local OUTPUT_FILE="$(echo "$file" | sed "s/$CONTENT_DIR/$OUTPUT_DIR/")" # if [ ! -f "$OUTPUT_FILE" ]; then # printf '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' > "$OUTPUT_FILE" # printf '<?xml-stylesheet href="style.xsl" type="text/xsl"?>\n' >> "$OUTPUT_FILE" # printf '<rss version="2.0">\n' >> "$OUTPUT_FILE" # printf '<channel>' >> "$OUTPUT_FILE" # printf '<title>%s\n' "$SITE_TITLE" >> "$OUTPUT_FILE" # printf '%s\n' "$DOMAIN" >> "$OUTPUT_FILE" # printf '%s\n' "$DESCRIPTION" >> "$OUTPUT_FILE" # printf '%s\n' "$COPYRIGHT" >> "$OUTPUT_FILE" # cat "$file" >> "$OUTPUT_FILE" # printf '\n' >> "$OUTPUT_FILE" # printf '\n' >> "$OUTPUT_FILE" # fi # done #} build_feeds() { local BLOG_INDEX="$BLOG_DIR/index.html" local OUTPUT_FILE="$OUTPUT_DIR/index.xml" printf '\n' > "$OUTPUT_FILE" printf '\n' >> "$OUTPUT_FILE" printf '\n' >> "$OUTPUT_FILE" printf '' >> "$OUTPUT_FILE" printf '%s\n' "$SITE_TITLE" >> "$OUTPUT_FILE" printf '%s\n' "$DOMAIN" >> "$OUTPUT_FILE" printf '%s\n' "$DESCRIPTION" >> "$OUTPUT_FILE" printf '%s\n' "$COPYRIGHT" >> "$OUTPUT_FILE" grep -Eo "/blog/[a-zA-Z0-9./?=_%:-]*.html" "$BLOG_INDEX" | while read POST_URL; do local POST_FILE="$CONTENT_DIR$POST_URL" local POST_TITLE="$(grep "class=\"title\"" "$POST_FILE" | head -n 1 | sed 's!^[^>]*>!!' | sed 's!<.*$!!')" local POST_DATE="$(date -d "$(grep "class=\"date\"" "$POST_FILE" | head -n 1 | sed 's!^[^>]*>!!' | sed 's!<.*$!!')" '+%a, %d %b %Y %H:%M:%S %Z')" local POST_CONTENT="$(tail -n +6 "$POST_FILE" | head -n -1)" printf '%s' "$AUTHOR" >> "$OUTPUT_FILE" printf '%s' "$POST_DATE" >> "$OUTPUT_FILE" printf '%s' "$POST_TITLE" >> "$OUTPUT_FILE" printf '%s' "$DOMAIN" >> "$OUTPUT_FILE" printf '%s' "$POST_URL" >> "$OUTPUT_FILE" printf '%s' "$DOMAIN" >> "$OUTPUT_FILE" printf '%s' "$POST_URL" >> "$OUTPUT_FILE" printf '> "$OUTPUT_FILE" printf '%s' "$POST_CONTENT" >> "$OUTPUT_FILE" printf '\n]]>\n' >> "$OUTPUT_FILE" done printf '\n' >> "$OUTPUT_FILE" } case "$1" in build) build_pages build_feeds ;; esac