#!/bin/bash # noter 1.1.7 - "verofoed" - @k@layer8.space - mit showgenerator="true" backtotop="true" lastupdated="true" nlog() { local ORANGE='\033[0;33m' local NO_COLOR='\033[0m' echo -e "${ORANGE}[noter] | ${1} ${NO_COLOR}" } if [ ! -d "notes" ]; then nlog "Error: 'notes' folder not found!" exit 1 fi checksetting() { # Use this function to check for a setting without repetition # Eg: # checksetting "yourmom" "$isyourmom" if [ "$2" = true ]; then echo "$1" >>"$output_file" fi } givefavicon() { local file_path="$1" if [ -f "$file_path" ]; then local base64_data="$(base64 -w 0 "$file_path")" echo "data:image/png;base64,$base64_data" fi } generate_note_html() { # NOTE TO SELF: Figure out parsing html blocks (ie: ) so that we can apply styles for whole # elements instead of doing what we're doing right now... local note_date="$(date -d "$(basename "$1" .txt)" +"%B %d, %Y")" for img in $(grep -oP '(?<=" echo "
" if [ "$2" = true ]; then echo "

$(date -d "$(basename "$1" .txt)" +"%Y")

" fi echo "

$note_date

" echo "
$(cat "$1")
" echo "
" } generate_top_year_bar() { local years=$(find notes -name "*.txt" ! -empty | cut -d'/' -f2 | cut -d'-' -f1 | sort -u | tac) local top_bar="
" local first_year=true for year in $years; do if [ "$first_year" = false ]; then top_bar+=" | " else first_year=false fi top_bar+="$year" done top_bar+="

" echo "$top_bar" } notecount=$(find notes -name "*.txt" ! -empty | wc -l) # Create HTML file output_file="notes.html" echo " Mastodon $notecount notes | noter

notes

" >"$output_file" generate_top_year_bar >>"$output_file" # loop for every note in notes nlog "generating page..." for file in $(ls -r notes/*.txt); do nlog "processing: $file" if [ -f "$file" ] && [ -s "$file" ]; then generate_note_html "$file" >>"$output_file" fi done # bottom navigation checksetting "
generated with noter
" "$showgenerator" checksetting "" "$backtotop" checksetting "
last Updated: $(date +"%Y-%m-%d %H:%M:%S")
" "$lastupdated" echo "
" >>"$output_file" nlog "Done, please see: $output_file."