+ 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