#!/bin/sh
path="${0%/*}"
. "$path/inc.sh"

# Edit sim1 & sim2 configs, not saved for gws and overwritten by gws setup

usage () {
	die 'gwmodem edit -- [simX]'
}

while : ; do
	case "$1" in
		--)
			shift
			break
		;;
		-*)
			usage
		;;
		*)
			break
		;;
	esac
	shift
done

simx="${1::4}"
shift

generateConf() {
	# $1: sim1/sim2
	local sf="/etc/ppp/peers/${1}.conf"
	[ -r "${sf}" ] || sf="$path/sim.conf"
	local prefix="$1"
	prefix=${prefix:+${prefix}_}
	prefix=${prefix:-#}
	awk '$0=gensub(/^(#*)(.+)/,"\\1'"${prefix}"'\\2",$0)' "${sf}"
}

generateCombined() {
	local combinedConf="$1"
	printf "# Removing APN will remove configuration\n" >  "${combinedConf}"
	printf "# SIM1\n"   >> "${combinedConf}"
	generateConf sim1   >> "${combinedConf}"
	printf "\n# SIM2\n" >> "${combinedConf}"
	generateConf sim2   >> "${combinedConf}"
}

splitCombined() {
	local combinedConf="$1"
	rm "${sim1conf}" 2>/dev/null
	rm "${sim2conf}" 2>/dev/null
	# File will be removed if APN is empty
	$path/split_sim_conf.awk -vsim1=1 "${combinedConf}" > "${sim1conf}" || rm "${sim1conf}"
	$path/split_sim_conf.awk -vsim2=1 "${combinedConf}" > "${sim2conf}" || rm "${sim2conf}"
}

run() {
	if [ -z "${simx}" ]; then
		# Edit both sim configs
		local combinedConf="/tmp/xx"
		generateCombined "${combinedConf}"
		if ! editFile "${combinedConf}"; then
			splitCombined "${combinedConf}"
		fi
		rm "${combinedConf}"
	else
		case "${simx}" in
			sim1|sim2) break
			;;
			*) return
		esac
		simf="/etc/ppp/peers/${simx}.conf"
		if [ -e "${simf}" ]; then
			# edit existing single sim conf
			editFile "${simf}"
		else
			# create new conf
			generateConf >> "${simf}"
			# If file does not change, then remove autogenerated file
			editFile "${simf}" && rm "${simf}"
		fi
	fi
}

run
