#!/bin/sh

alterator_api_version=1

. alterator-sh-functions

_fake_focalization() {
  local tmp 
  tmp="`_ "linux"`"
  tmp="`_ "live"`"
  tmp="`_ "rescue"`"
  tmp="`_ "memtest"`"
  tmp="`_ "failsafe"`"
  tmp="`_ "harddisk"`"
}

write_string_params(){
  while read key val; do
    write_string_param "${key%:}" "${val}"
  done
}

vncparams=/srv/public/netinst/vncparams

on_message() {
  case "$in_action" in
      type)
		  write_type_item image integer
      ;;
    list)
      case $in__objects in
        labels)
          run_localized alterator-netinst -L | while read N L; do
	    write_enum_item "$N" "`_ "$L"`"
	  done
          ;;
        *)
          write_enum_item "0" "`_ "No image"`"
          run_localized alterator-netinst -l | write_enum
          ;;
      esac
      ;;
    read)
      case "$in__objects" in
        wait)
          run_localized alterator-netinst -S | write_string_params
          return
          ;;
        *)
          local curr="$(alterator-netinst -c)"
          write_string_param "image" "$curr"
          write_string_param "labels" "$(alterator-netinst -C)"
          write_string_param "get_from" "cd"
          grep -q vnc $vncparams && write_string_param "vnc" "#t" ||  write_string_param "vnc" "#f"
          grep -q headless $vncparams && write_string_param "headless" "#t" ||  write_string_param "headless" "#f"
          grep -q ' vncconnect' $vncparams && write_string_param "direction" "connect" ||  write_string_param "direction" "listen"
          write_string_param "vncconnect" $(grep -o 'vncconnect=[^ ]*' $vncparams | sed s/vncconnect=//)
          write_string_param "vncpassword" $(grep -o 'vncpassword=[^ ]*' $vncparams | sed s/vncpassword=//)
          run_localized alterator-netinst -r "$curr" | write_string_params
          ;;
      esac
      ;;
    write)
      if [ -n "$in_cancel" ]; then
        run_localized alterator-netinst -D
      elif [ -n "$in_sel" ]; then
        run_localized alterator-netinst -s "$in_image"
      elif [ -n "$in_del" ]; then
        run_localized alterator-netinst -d "$in_image"
      elif [ -n "$in_add" ]; then
        [ "$in_get_from" = "url" ] &&
          run_localized alterator-netinst -A "$in_add_url" ||
          run_localized alterator-netinst -A "cdrom:"
      else 
        set >> /tmp/log
        if [ -n "$in_vnc" ]; then
          if [ "$in_vnc" = '#t' ] ; then
            vnc=
            headless=
            [ "$in_headless" = '#t' ] && headless='headless'
            [ "$in_direction" = "listen" ] && [ -n "$in_vncpassword" ] && vnc="vncpassword=$in_vncpassword"
            [ "$in_direction" = "connect" ] &&  vnc="vncconnect=$in_vncconnect"
            run_localized alterator-netinst -v "vnc $vnc $headless"
          else
            run_localized alterator-netinst -v ''
          fi
        fi
        if [ -n "$in_labels" ]; then
          run_localized alterator-netinst -b "$in_labels"
        fi
      fi
      ;;
  esac
}

message_loop
