#!/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 < 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