diff --git a/main.py b/main.py deleted file mode 100644 index 0eb86f1..0000000 --- a/main.py +++ /dev/null @@ -1,21 +0,0 @@ -import subprocess -import uuid -import os -import hashlib - -URL = 'https://arch.dog' - -def main(): - subprocess.run(['/usr/bin/docker', 'pull', 'git.gmem.ca/arch/servo:latest']) - filename = os.path.join('/tmp', str(uuid.uuid4())) - ARGS = ['-z', '-y2', f'-o{filename}', '--resolution=1920x1080'] - print(f'rendering {URL} to {filename}') - subprocess.run(['/usr/bin/docker', 'run', '--rm', '-v/tmp:/tmp', 'git.gmem.ca/arch/servo:latest'] + ARGS + [URL]) - with open(filename, 'rb') as file_to_check: - data = file_to_check.read() - md5_returned = hashlib.md5(data).hexdigest() - print(md5_returned) - - -if __name__ == '__main__': - main() diff --git a/snapshot.sh b/snapshot.sh new file mode 100755 index 0000000..cc3d0cf --- /dev/null +++ b/snapshot.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +set -euo pipefail + +snapshot() { + docker run --rm -v /tmp:/tmp git.gmem.ca/arch/servo:latest "$1" -z -y2 -o"$2" --resolution=1920x1080 +} + +hash() { + checksum=$(md5sum "$1" | awk '{print $1}') + echo "$checksum" +} + +update_servo_image() { + docker pull git.gmem.ca/arch/servo:latest -q > /dev/null +} + +post() { + curl -X POST -H "Authorization: ${1}" \ + -F date="$(date -I)" \ + -F hash="${2}" \ + -F file="@${3}" \ + "${4}" -s > /dev/null +} + + +# Default value for dry-run flag +DRYRUN='false' + +# Parse command-line options +while getopts "d-:" opt; do + case $opt in + d) + DRYRUN='true' + ;; + -) + case "${OPTARG}" in + dry-run) + DRYRUN='true' + ;; + *) + echo "Invalid option --${OPTARG}" + exit 1 + ;; + esac + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +# Shift the parsed options +shift $((OPTIND-1)) + +# Ensure positional parameters are provided +if [ $# -lt 2 ]; then + echo "Usage: $0 [--dry-run] " + exit 1 +fi + +url=$1 +api=$2 + +tmpfile="$(mktemp -u)" +echo "Updating local git.gmem.ca/arch/servo:latest" +update_servo_image +echo "Snapshotting $1" +snapshot "$url" "$tmpfile" +checksum=$(hash "$tmpfile") + +if [ $DRYRUN = 'false' ]; then + echo "Sending ${tmpfile} to API" + post "$SERVO_API_TOKEN" "$checksum" "$tmpfile" "$api" +else + echo "Dry run specified, not sending $tmpfile to API" + echo "File hash: $checksum" +fi + +echo "Done!"