#!/bin/sh

# To generate localization information, run:
#   xgettext -o - -L Shell select-editor

# if no gettext it will fallback to gettext on /usr/share/sensible-utils/bin
# see #728612
PATH="$PATH:/usr/sbin:/usr/share/sensible-utils/bin"

# EASIEST editor
EASIEST="/bin/nano"

# Ensure that $HOME/.selected_editor is writeable
touch "$HOME/.selected_editor" || exit 1

sorted_list_of_editors() {
               update-alternatives --query editor | while read emptyline; do
                       # skip the first entry (header) as well as the rest of processed entries
                       if [ -z "$emptyline" ]; then continue; fi

                       # extract the two interesting fields
                       local ALTERNATIVE=''
                       local PRIORITY=''
                       while read field value; do
                               case "${field}" in
                                       'Alternative:') ALTERNATIVE="${value}";;
                                       'Priority:') PRIORITY="${value}";;
                               esac
                               if [ -n "$ALTERNATIVE" ] && [ -n "$PRIORITY" ]; then break; fi
                       done
                       if [ -z "$ALTERNATIVE" ] || [ -z "$PRIORITY" ]; then continue; fi

                       echo "${PRIORITY}:${ALTERNATIVE}"
               done | sort -n -r | cut -d':' -f 2-
}


editors=$(update-alternatives --list editor | wc -l)
if [ $editors -gt 1 ]; then
        # fix simple to 1 see #777168
        simple=1
	echo
	echo "`gettext 'Select an editor.  To change later, run'`" "'select-editor'."
	i=0
	editors=$(sorted_list_of_editors)
	for e in $editors; do
		i=$(expr $i + 1)
		desc=
		if [ $e = "$EASIEST" ]; then
			desc="        <---- ` gettext 'easiest'`"
			simple=$i
		fi
		echo "  $i. $e$desc"
	done
	echo ""
	selected=x
	while /bin/true; do
		if [ -z "$selected" -a ! -z "$simple" ]; then
			selected="$simple"
		elif ! test $selected -gt 0 2>/dev/null; then
			echo -n "$(gettext 'Choose') 1-$i [$simple]: "
			read -r selected
		elif ! test $selected -le $i 2>/dev/null; then
			echo -n "$(gettext 'Choose') 1-$i [$simple]: "
			read -r selected
		else
			break
		fi
	done
	i=0
	for e in $editors; do
		i=$(expr $i + 1)
		if [ $i -eq $selected ]; then
			echo "# Generated by /usr/bin/select-editor" > $HOME/.selected_editor
			echo "SELECTED_EDITOR=\"$e\"" >> $HOME/.selected_editor && exit 0
		fi
	done
fi
exit 1
