#! /bin/sh -e

# This is an example of how to build a local mirror containing only the
# index files, not the packages themselves. If you put something similar to
# this in a cron job, then you can run madison-lite locally. Be sure to
# change the various hostnames to appropriate mirrors, set MIRROR to a
# suitable directory, and fill the mirror directory into your madison-lite
# configuration file.
#
# If you are reading this after the release of sarge, then you may need to
# change the lists of distributions and architectures.

HOST_MAIN=${HOST_MAIN:-'ftp://ftp.debian.org/debian'}
HOST_NONUS=${HOST_NONUS:-'ftp://non-us.debian.org/debian-non-US'}
HOST_SECURITY=${HOST_SECURITY:-'ftp://security.debian.org/debian-security'}
MIRROR=${MIRROR:-/tmp/mirror}

WGET_OPTS=${WGET_OPTS-'-q -N --passive-ftp'}

umask 002

mkdir -p "$MIRROR"
cd "$MIRROR"

mkdir -p dists
cd dists

archives='main non-US security'
components='main contrib non-free'

for archive in $archives; do
    case $archive in
	main)
	    host="$HOST_MAIN"
	    suitesuffix=''
	    suites='stable testing unstable experimental'
	    ;;
	non-US)
	    host="$HOST_NONUS"
	    suitesuffix='/non-US'
	    suites='stable testing unstable'
	    ;;
	security)
	    host="$HOST_SECURITY"
	    suitesuffix='/updates'
	    suites='stable testing'
	    ;;
	*)
	    echo "Internal error: archive '$archive'?" >&2
	    exit 1
    esac

    for suite in $suites; do
	if [ "$archive" = main ]; then
	    suitehere="$suite"
	else
	    suitehere="$suite-$archive"
	fi

	mkdir -p "$suitehere"
	if [ "$suite" = experimental ]; then
	    root=project
	else
	    root=dists
	fi
	case $suite in
	    oldstable)
		arches='alpha arm i386 m68k powerpc sparc'
		;;
	    stable|testing|unstable|experimental)
		arches='alpha arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc'
		;;
	esac
	for component in $components; do
	    mkdir -p "$suitehere/$component"
	    for arch in $arches; do
		mkdir -p "$suitehere/$component/binary-$arch"
		wget $WGET_OPTS -O "$suitehere/$component/binary-$arch/Packages.gz" "$host/$root/$suite$suitesuffix/$component/binary-$arch/Packages.gz"
	    done
	    mkdir -p "$suite/$component/source"
	    wget $WGET_OPTS -O "$suite/$component/source/Sources.gz" "$host/$root/$suite$suitesuffix/$component/source/Sources.gz"
	done
    done
done

exit 0
