#!/bin/sh

# lh_chroot_sources(1) - manage /etc/apt/sources.list
# Copyright (C) 2006-2007 Daniel Baumann <daniel@debian.org>
#
# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
# This is free software, and you are welcome to redistribute it
# under certain conditions; see COPYING for details.

set -e

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

# Set static variables
DESCRIPTION="manage /etc/apt/sources.list"
HELP=""
USAGE="${PROGRAM} {install|remove} [--force]"

Arguments "${@}"

# 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 .stage/bootstrap

# Checking lock file
Check_lockfile .lock

# Creating lock file
Create_lockfile .lock

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

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

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

		if [ "${LIVE_SECURITY}" = "enabled" ]
		then
			if [ "${LIVE_DISTRIBUTION}" != "sid" ] && [ "${LIVE_DISTRIBUTION}" = "unstable" ]
			then
				echo "deb ${LIVE_MIRROR_BUILD_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list

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

		# Check local sources.list
		if [ -f config/sources.list.build ]
		then
			echo "" >> chroot/etc/apt/sources.list
			echo "# Custom repositories" >> chroot/etc/apt/sources.list
			cat config/sources.list.build >> chroot/etc/apt/sources.list
		fi

		# Installing aptitude
		if [ "${LH_APT}" = "apt" ]
		then
			Chroot "apt-get update"
		elif [ "${LH_APT}" = "aptitude" ]
		then
			if [ ! -x /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 .stage/chroot_sources
		;;

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

			echo "deb ${LIVE_MIRROR_IMAGE} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" > chroot/etc/apt/sources.list

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

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

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

			# Check local sources.list
			if [ -f config/sources.list.image ]
			then
				echo "" >> chroot/etc/apt/sources.list
				echo "# Custom repositories" >> chroot/etc/apt/sources.list
				cat config/sources.list.image >> chroot/etc/apt/sources.list
			fi

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

				aptitude)
					Chroot "aptitude update"
					;;
			esac
		fi

		# Cleaning apt packages cache
		rm -rf chroot/var/cache/apt
		mkdir -p chroot/var/cache/apt/archives/partial

		# Removing old files
		rm -f chroot/var/lib/dpkg/available-old
		rm -f chroot/var/lib/dpkg/diversions-old
		rm -f chroot/var/lib/dpkg/statoverride-old
		rm -f chroot/var/lib/dpkg/status-old

		# Removing stage file
		rm -f .stage/chroot_sources
		;;

	*)
		Usage
		;;
esac