#!/bin/sh

mountpoint="/media/cdrom"
pkggroups="$mountpoint/Metadata/pkg-groups.tar"
diskinfo="$mountpoint/.disk/info"
pkgdir="/var/lib/install3"

disk_valid()
{
    [ -f "$pkggroups" -a -f "$diskinfo" ]
}

disk_list()
{
    sed -rn \
	-e 's,^rpm[[:space:]]cdrom:\[([^\]+)].*,\1,p' \
	/etc/apt/sources.list.d/*.list \
	/etc/apt/sources.list
}

disk_exists()
{
    disk_list | grep -qs "$(cat "$diskinfo")"
}

disk_add_metadata()
{
    mkdir -p "$pkgdir"
    tar -C "$pkgdir" -xvpf "$pkggroups" >&2
}

disk_add_cdrom()
{
    apt-cdrom --cdrom "$mountpoint" --no-mount -o dir::etc=/etc/apt/sources.list.d add >&2
}

disk_add()
{
    disk_add_metadata && disk_add_cdrom
}

_()
{
LANG="${in_language%%;*}.utf8" gettext "alterator-pkg" "$1"
}


. /usr/share/alterator/build/backend3.sh

on_message()
{
    local err=
    case "$in_action" in
	list)
	    echo '('
		disk_list | sed 's,.*,("&"),'
	    echo ')'
	    ;;
	new)
	    mount "$mountpoint" >&2
	    if ! disk_valid; then
		printf '(error "%s")' "`_ "Please insert disk"`"
	    elif disk_exists; then
		printf '(error "%s")' "`_ "This disk is already added"`"
	    elif disk_add ;then
		echo '()'
	    else
		printf '(error "%s")' "`_ "Invalid disk"`"
	    fi
	    umount "$mountpoint" >&2
	    ;;
	*)
	    echo '#f'
    esac
}

message_loop
