#!/bin/sh

if [ "$1" = "--help" ]; then
	cat <<EOF
usage: vbuilder add -n <container> [-t] <package1> [...]

options:
  --help                   show this text
  -n, --name <container>   name of environment (required)
  -t, --tmpfs              use tmpfs for the upper layer of overlayfs

package1 ...packageN: 
  filename or packagename to install

EOF
	exit 0
fi

LIBEXECDIR="/usr/libexec/vbuilder"
CONTAINER=""
TMPFS=0
PKGS=""

while [ $# -gt 0 ]; do
	case $1 in
		-n|--name)
			shift
			CONTAINER=$1
			;;
		-t|--tmpfs)
			TMPFS=1
			;;
		*)
			if [ -f $1 ]; then
				if ! rpm -qp $1 >/dev/null; then
					echo "$1: invalid file" >&2
					exit 1;
				fi
			fi
			PKGS="$PKGS $1"
			;;
	esac

	shift
done

. $LIBEXECDIR/common.sh

prepare_container

JOBS=$(mktemp -d --tmpdir vbuilder.XXXXXXXXXX)
mkdir -p $JOBS/rpms
chmod 1777 $JOBS
mkdir -p $CONTAINER_PATH/tmp
mount -o bind,_netdev $JOBS $CONTAINER_PATH/tmp

start_container

PKGFILES=""
PKGNAMES=""
for f in $PKGS; do
	if [ -f $f ]; then
		cp $f $JOBS/rpms/
		BASENAME=$(basename $f)
		PKGFILES="$PKGFILES /tmp/jobs/rpms/$BASENAME"
	else
		PKGNAMES="$PKGNAMES $f"
	fi
done

wait_container_ready

lxc-attach -n $CONTAINER -- apt-get update && lxc-attach -n $CONTAINER -- apt-get -y install $PKGNAMES $PKGFILES ||:

shutdown_container

umount $CONTAINER_PATH/tmp
rm -rf $JOBS

umount_tmpfs
