+ New script for neocities
This commit is contained in:
parent
bc71787702
commit
affc7ec063
53
scripts/neocities.sh
Normal file
53
scripts/neocities.sh
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#!/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
|
98
upload.sh
98
upload.sh
@ -1,98 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ ! -z .env ];then
|
|
||||||
# no env means we have to use the neocities var
|
|
||||||
export KEY=$NEOCITIES_KEY
|
|
||||||
else
|
|
||||||
source .env
|
|
||||||
fi
|
|
||||||
|
|
||||||
url="https://neocities.org"
|
|
||||||
site=.mirror
|
|
||||||
auth="Authorization: Bearer $KEY"
|
|
||||||
|
|
||||||
|
|
||||||
_upload_html() {
|
|
||||||
# fix this comparison cuz its busted
|
|
||||||
if [ ${1:0:1} = "" ];then
|
|
||||||
echo Path must start with ./
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
for f in $@;do
|
|
||||||
remote_path=${f:1}
|
|
||||||
echo curl -s -o /dev/null -w '%{http_code}' -H "auth" -F "$remote_path=@$f" $url/api/upload
|
|
||||||
curl -s -o /dev/null -w '%{http_code}' -H "$auth" -F "$remote_path=@$f" $url/api/upload
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_upload_media() {
|
|
||||||
[[ "${1:0:1}" == "./" ]] && \
|
|
||||||
echo 'Path must start with ./' && \
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
for f in $@;do
|
|
||||||
remote_path=${f:1}
|
|
||||||
echo curl -s -o /dev/null -w '%{http_code}' -H "auth" -F "$remote_path=@$f" $url/api/upload
|
|
||||||
curl -s -o /dev/null -w '%{http_code}' -H "$auth" -F "$remote_path=@$f" $url/api/upload
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_upload_all_media() {
|
|
||||||
for file in $(find media -type f);do
|
|
||||||
echo Uploading media: $file
|
|
||||||
curl -H "$auth" -F "$file=@$file" $url/api/upload -s > /dev/null
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
html() {
|
|
||||||
# Total reupload of the site's html
|
|
||||||
_upload_html $(find -name '*.html')
|
|
||||||
}
|
|
||||||
|
|
||||||
roots() {
|
|
||||||
_upload_html ./*.html
|
|
||||||
}
|
|
||||||
|
|
||||||
folder() {
|
|
||||||
if [ -z $1];then
|
|
||||||
echo No folder specified > /dev/stderr
|
|
||||||
else
|
|
||||||
pushd $1 > /dev/null
|
|
||||||
_upload_html ./*.html
|
|
||||||
popd > /dev/null
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_help() {
|
|
||||||
cat <<EOF
|
|
||||||
PATHS:
|
|
||||||
Use a fake relative path as if we were in "$site"
|
|
||||||
Example: gensite -m ./media/img/some-post/image.jpg ...
|
|
||||||
Options:
|
|
||||||
h => Reuploads all the html content
|
|
||||||
r => Uploads all root html pages
|
|
||||||
f [FOLDER] => Upload all html in [FOLDER]
|
|
||||||
s [PATH] => Upload single html page with mirrord path
|
|
||||||
m [PATH] => Upload any amount of media files
|
|
||||||
M => Upload all available media
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z $1 ];then
|
|
||||||
_help
|
|
||||||
else
|
|
||||||
pushd $site > /dev/null
|
|
||||||
while getopts 'a::Hhrf:s:m:M' opt;do
|
|
||||||
case $opt in
|
|
||||||
H) _help;;
|
|
||||||
h) _upload_html $(find -name '*.html');; # Upload all html content
|
|
||||||
r) _upload_html ./*.html;; # Upload all root html pages
|
|
||||||
f) _upload_html $2/*.html;;# Upload html in the spec'd folder
|
|
||||||
s) _upload_html $2;;# upload single html page
|
|
||||||
m) _upload_media $2;;# upload raw file
|
|
||||||
M) _upload_all_media;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
popd > /dev/null
|
|
||||||
fi
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user