#!/usr/bin/env bash

addressbook="$HOME/.abook/addressbook"

filter(){
	if [ -n "$1" ]; then
		local str="$(echo "$1" | tr -d ' ' | sed 's/^0/+44/')"
		grep -i "$str"
	else
		cat -
	fi
}

cat "$addressbook" |
	grep -E '(\[[0-9]+\]|^$|name|phone|mobile)' |
	awk -v RS="\n\n" -v ORS="\n" '{gsub("\n","\t",$0); print $0}' |
	grep -E "(phone|mobile)" | while read -r line; do
		name="$(echo "$line" | cut -d '	' -f 2 | cut -d '=' -f 2)"
		echo "$line" | tr '\t' '\n' |
			grep -E '(phone|mobile)' | while read -r numLine; do
				num="$(echo "$numLine" | cut -d '=' -f 2 | tr -d ' ' |
					sed 's/+44(0)/+44/' | sed 's/^0/+44/')"
				numType="$(echo "$numLine" | cut -d '=' -f 1)"
				echo -e "$name\t$num\t$numType"
			done
	done | filter "$*"
