#!/bin/bash

server_uri='https://ccp-logs.cocoapress.com/submit'
logs_path=/home/cocoapress/printer_data/logs

if ! ping -qc 1 1.1.1.1 >/dev/null; then
	echo 'You must have network configured to submit diagnostics'
	exit 2
fi

function main() {
	tempdir="$(mktemp -d)"
	trap "rm -rf $tempdir" EXIT

	echo 'Collecting logs...'
	cat /etc/machine-id >"${tempdir}/machine-id"
	env | grep COCOA_PRESS >"${tempdir}/environment.txt"

	echo '  [ System logs ]'
	sudo journalctl --boot 0 --output=json >"${tempdir}/journal.jsonl"

	echo '  [ Detecting devices ]'
	sudo lsusb -v >"${tempdir}/lsusb.txt" 2>/dev/null
	find /dev/serial >"${tempdir}/serial-devices.txt"
	findmnt --json >"${tempdir}/mounts.json" 2>/dev/null
	lsblk --all --json >"${tempdir}/block-devices.json" 2>/dev/null
	DISPLAY=:0 xrandr --verbose >"${tempdir}/xrandr.txt" 2>/dev/null

	echo '  [ Kernel logs ]'
	sudo dmesg >"${tempdir}/dmesg.txt"

	echo '  [ Service status ]'
	sudo systemctl list-units --all --output=json >"${tempdir}/services.json"

	echo '  [ Service logs ]'
	cp $logs_path/KlipperScreen.log $logs_path/klippy.log $logs_path/moonraker.log \
		$tempdir/

	echo 'Submitting...'
	curl --compressed --progress-bar "$server_uri" \
		-H "X-CocoaPress-Machine-Id: $(cat /etc/machine-id)" \
		$(
			for filename in "$tempdir/"*; do
				echo -n " -F files[]=@$filename "
			done
		)
}

main
