#!/bin/sh -efu

if [ $# -le 1 ]; then
    echo "Usage: "`basename $0`" <source hasher workdir> <target hasher workdir>"
    echo "<source hasher workdir> <target hasher workdir> must be on the same partition."
    exit 1
fi

origin_workdir="$1"
cloned_workdir="$2"
shift 2

if ! [ -d "$origin_workdir" ]; then
    echo "Error: source hasher workdir $origin_workdir does not exist!"
    exit 1
fi
if ! [ -d "$origin_workdir"/cache  -a -d "$origin_workdir"/aptbox ]; then
    echo "Bad source hasher workdir: $origin_workdir/cache or $origin_workdir/aptbox not found"
    exit 1
fi
if [ -d "$origin_workdir"/chroot ]; then
    echo "Warning: found $origin_workdir/chroot: run hsh-rmchroot $origin_workdir to save space."
fi
if [ -d "$cloned_workdir"/chroot ]; then
    hsh-rmchroot "$cloned_workdir"
fi
if [ -d "$cloned_workdir" ]; then
    rm -rf "$cloned_workdir"/{aptbox,cache}
fi

mkdir -p "$cloned_workdir"
if ! cp -rl "$origin_workdir"/{aptbox,cache} "$cloned_workdir"; then
    echo "Error: cloning $origin_workdir to $cloned_workdir failed."
    echo "Are they on the same partition?"
    rm -rf "$cloned_workdir"
    exit 1
fi

rm -f \
   "$cloned_workdir"/pid \
   "$cloned_workdir"/aptbox/var/cache/apt/archives/lock \
   "$cloned_workdir"/aptbox/var/lib/apt/lists/lock \
   "$cloned_workdir"/aptbox/var/lib/rpm/.rpm.lock \
   "$cloned_workdir"/aptbox/var/lib/rpm/.dbenv.lock
touch \
    "$cloned_workdir"/pid \
    "$cloned_workdir"/aptbox/var/cache/apt/archives/lock \
    "$cloned_workdir"/aptbox/var/lib/apt/lists/lock \
    "$cloned_workdir"/aptbox/var/lib/rpm/.rpm.lock \
    "$cloned_workdir"/aptbox/var/lib/rpm/.dbenv.lock

# update apt files for --with-stuff
sed -i "s,$origin_workdir,$cloned_workdir,g" \
    "$cloned_workdir"/aptbox/apt-cache \
    "$cloned_workdir"/aptbox/apt-config \
    "$cloned_workdir"/aptbox/apt-get \
    "$cloned_workdir"/aptbox/regenbasedir \
    "$cloned_workdir"/aptbox/setarch \
    "$cloned_workdir"/aptbox/etc/apt/apt.conf \
    "$cloned_workdir"/aptbox/etc/apt/sources.list \
    "$cloned_workdir"/cache/contents/parts_list
