#!/bin/sh
##############################################
current_setup_file='/usr/local/etc/telem/setup.tar.xz'
DEFAULT_SETUP_FILE='/etc/default/setup/setup.tar.xz'
DEFAULT_USER_SETUP_FILE='/etc/default/user_setup/setup.tar.xz'
##############################################

[ "$(id -u)" = 0 ] || return 1

die () {
	echo >&2 "$@"
	exit 1
}

usage () {
	die 'gwconf-list [--all] [--old]'
}

listhead() {
	printf "%-2s %-9s %14s %6s %s\n" "ID" "sha256/32" "Modified" "Size" "Description"
	printf "======================================================\n"
}

listrow() {
	local fname="$1"
	local id="$2"
	local desc="$3"
	local sha="$(sha256sum "${fname}" 2>/dev/null || echo '--')"
	local mtime="$(date -r "${fname}"  +"%y-%m-%d %H:%M" 2>/dev/null || echo '--')"
	local size="$(du -kh "${fname}" 2>/dev/null | awk '{print $1}')"
	printf "%-2s %-9s %14s %6s %s\n" "${id}" "${sha::8}" "${mtime}" "${size}" "${desc}"
}

list_bkp() {
	listrow "${current_setup_file}.0"    '0' 'backup 0'
	listrow "${current_setup_file}.1"    '1' 'backup 1'
	listrow "${current_setup_file}.2"    '2' 'backup 2'
	listrow "${current_setup_file}.3"    '3' 'backup 3'
	listrow "${current_setup_file}.4"    '4' 'backup 4'
}

list_old() {
	listhead
	list_bkp
}

list_all() {
	listhead
	listrow "${current_setup_file}"      'c' 'current setup'
	list_bkp
	listrow "${DEFAULT_SETUP_FILE}"      's' 'system default'
	listrow "${DEFAULT_USER_SETUP_FILE}" 'u' 'user default'
	# SD card does not matter, as configs are copied to device
}

while : ; do
	case "$1" in
		--all)
			list_all; exit
		;;
		--old)
			list_old; exit
		;;
		--)
			shift
			break
		;;
		-*)
			usage
		;;
		*)
			break
		;;
	esac
	shift
done

# by default list configs
list_all
