blog/scripts/neocities.sh
2022-01-19 16:52:46 -08:00

54 lines
1.1 KiB
Bash

#!/bin/bash
# This script takes care of uploading all artifacts in the public/ directory
# To neocities via its API, This script is meant to be used in CI only
# however it may occasionally be tested elsewhere
upload_file() {
file_path="$1"
uri_path="${file_path:6}"
if [ -z "$file_path" ];then
echo ERROR: upload_file Received an empty parameter exiting now >&2
return 1
fi
# Sub-routine uploads a single file for
base='https://neocities.org/api/upload'
# Curl gives us the exit code for this sub-routine's exit code
curl \
-H "Authorization: Bearer ${API_KEY}" \
-F "${uri_path}=@${file_path}"
}
feed_files() {
# 2 seconds between API hits to ease up on Neocities
SLEEP_TIME=2
if [ ! -z "$CUSTOM_SLEEP_TIME" ]; then
SLEEP_TIME=$CUSTOM_SLEEP_TIME
fi
# Main uploading section
while read -r line; do
if upload_file "$line"; then
echo Uploaded $line
else
echo Failed $line >&2
fi
sleep $SLEEP_TIME
done < /dev/stdin
}
if [ -d public/ ];then
echo Found public directory
# Upload all files that we wish to upload
find public/ -type f | grep '\.[a-z]*' | feed_files
else
echo No public directory found
exit 1
fi