Cached Neocities Uploads

Making uploading of directories to Neocities less painful.

– Created: February 10, 2024 UTC

– Edited: January 24, 2025 UTC

– Tags: Programming, Bash, Script


Quick and dirty Bash-based sha256sum checksum solution to create stamps for later checking and rejection.

#!/usr/bin/bash

for cur in ./html/{*,*/*,*/*/*}; do
  if [ -f "$cur" ] && [[ ! "$cur" == *.upload-checksum ]]; then
    if [ -f "$cur.upload-checksum" ]; then
      c=$(cat "$cur.upload-checksum" | sha256sum -c 2> /dev/null)
      if [[ "$c" == *OK ]]; then
        echo "$cur is up-to-date, skipping"
        continue
      fi
    fi
    echo $(sha256sum "$cur") > "$cur.upload-checksum"
    d=$(dirname $(realpath --relative-to="./html" "$cur"))
    if [[ "$d" == "." ]]; then
      neocities upload $cur
    else
      neocities upload -d $(dirname $(realpath --relative-to="./html" "$cur")) $cur
    fi
  fi
done