37 lines
		
	
	
		
			921 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			921 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env bash
 | 
						|
# Copyright (C) 2023  Umorpha Systems
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
 | 
						|
set -euE -o pipefail
 | 
						|
 | 
						|
main() {
 | 
						|
	local arg_src_file arg_dsts3_url
 | 
						|
	arg_src_file="$1"
 | 
						|
	arg_dst_s3url="$2"
 | 
						|
 | 
						|
	printf >&2 ":: Uploading %q to %q\n" "$arg_src_file" "$arg_dst_s3url"
 | 
						|
 | 
						|
	local hostname
 | 
						|
	hostname="$(bin/vultr-s3cmd hostname)"
 | 
						|
 | 
						|
	bucket=${arg_dst_s3url,,}
 | 
						|
	bucket=${bucket#s3://}
 | 
						|
	bucket=${bucket%%/*}
 | 
						|
 | 
						|
	bin/vultr-s3cmd mb "s3://$bucket" >&2
 | 
						|
 | 
						|
	md5_s3=$(bin/vultr-s3cmd ls --list-md5 "$arg_dst_s3url" | awk '{print $4}')
 | 
						|
	md5_local=$(md5sum "$arg_src_file" | awk '{print $1}')
 | 
						|
	if [[ "$md5_s3" == "$md5_local" ]]; then
 | 
						|
		printf >&2 ":: Already uploaded, nothing to do\n"
 | 
						|
	else
 | 
						|
		bin/vultr-s3cmd put --continue --progress --acl-public --verbose \
 | 
						|
				"$arg_src_file" "$arg_dst_s3url" >&2
 | 
						|
	fi
 | 
						|
 | 
						|
	dst_httpurl="https://${bucket}.${hostname}/${arg_dst_s3url#s3://${bucket}/}"
 | 
						|
	printf '%s\n' "$dst_httpurl"
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 |