#!/bin/sh

# lh_chroot_sources(1) - manage /etc/apt/sources.list

set -e

# Source common functions
for FUNCTION in /usr/share/live-helper/functions/*.sh
do
	. ${FUNCTION}
done

# Reading configuration files
Read_conffile config/common
Read_conffile config/chroot
Read_conffile config/bootstrap #FIXME
Read_conffile config/image
Set_defaults

# Requiring stage file
Require_stagefile "${LIVE_ROOT}"/.stage/bootstrap

# Checking lock file
Check_lockfile "${LIVE_ROOT}"/.lock

# Creating lock file
Create_lockfile "${LIVE_ROOT}"/.lock

case "${1}" in
	install)
		# Checking stage file
		Check_stagefile "${LIVE_ROOT}"/.stage/chroot_sources

		# Configure custom sources.list
		echo "deb ${LIVE_MIRROR} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" > "${LIVE_CHROOT}"/etc/apt/sources.list

		if [ "${LIVE_SOURCE}" = "enabled" ]
		then
			echo "deb-src ${LIVE_MIRROR} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list
		fi

		if [ "${LIVE_SECURITY}" = "enabled" ]
		then
			if [ "${LIVE_DISTRIBUTION}" = "etch" ] || [ "${LIVE_DISTRIBUTION}" = "testing" ]
			then
				echo "deb ${LIVE_MIRROR_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list

				if [ "${LIVE_SOURCE}" = "yes" ]
				then
					echo "deb-src ${LIVE_MIRROR_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list
				fi
			fi
		fi

		# Installing aptitude
		if [ "${LH_APT}" = "apt" ]
		then
			Chroot "apt-get update"
		elif [ "${LH_APT}" = "aptitude" ]
		then
			if [ ! -x "${LH_CHROOT}"/usr/bin/aptitude ]
			then
				Chroot "apt-get update"
				Chroot "apt-get install --yes --force-yes aptitude"
			fi

			Chroot "aptitude update"
		fi

		# Creating stage file
		Create_stagefile "${LIVE_ROOT}"/.stage/chroot_sources
		;;

	remove)
		# Configure generic indices
		if [ "${LH_APT_GENERIC}" = "enabled" ]
		then
			# Cleaning apt list cache
			rm -rf "${LIVE_CHROOT}"/var/lib/apt/lists
			mkdir -p "${LIVE_CHROOT}"/var/lib/apt/lists/partial

			echo "deb ${LIVE_MIRROR_GENERIC} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" > "${LIVE_CHROOT}"/etc/apt/sources.list

			if [ "${LIVE_SOURCE}" = "enabled" ]
			then
				echo "deb-src ${LIVE_MIRROR_GENERIC} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list
			fi

			if [ "${LIVE_SECURITY}" = "enabled" ]
			then
				if [ "${LIVE_DISTRIBUTION}" = "etch" ] || [ "${LIVE_DISTRIBUTION}" = "testing" ]
				then
					echo "deb ${LIVE_MIRROR_GENERIC_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list

					if [ "${LIVE_SOURCE}" = "yes" ]
					then
						echo "deb-src ${LIVE_MIRROR_GENERIC_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> "${LIVE_CHROOT}"/etc/apt/sources.list
					fi
				fi
			fi

			case "${LH_APT}" in
				apt)
					Chroot "apt-get update"
					;;

				aptitude)
					Chroot "aptitude update"
					;;
			esac
		fi

		# Cleaning apt packages cache
		rm -rf "${LIVE_CHROOT}"/var/cache/apt
		mkdir -p "${LIVE_CHROOT}"/var/cache/apt/archives/partial

		# Removing old files
		rm -f "${LIVE_CHROOT}"/var/lib/dpkg/available-old
		rm -f "${LIVE_CHROOT}"/var/lib/dpkg/diversions-old
		rm -f "${LIVE_CHROOT}"/var/lib/dpkg/statoverride-old
		rm -f "${LIVE_CHROOT}"/var/lib/dpkg/status-old

		# Removing stage file
		rm -f "${LIVE_ROOT}"/.stage/chroot_sources
		;;

	*)
		echo "Usage: ${0} {install|remove}"
		exit 1
		;;
esac