#!/bin/bash

LOG=/tmp/fow-$(id -u).log
LOG=/dev/null

UMOUNT_WAIT_RETRIES=${UMOUNT_WAIT_RETRIES:-"5"}
UMOUNT_WAIT_DELAY=${UMOUNT_WAIT_DELAY:-"1"}

if [ "$1" = "wait" ] ; then
    inotifywait -e delete $2/etc

    for i in $(seq $UMOUNT_WAIT_RETRIES); do
        umount -v $3 >> $LOG 2>&1
        if [ $? -ne 0 ]; then
            # Sleep to let podman clean up
            echo "Retry umount after sleep $UMOUNT_WAIT_DELAY second(s)" >> $LOG
            sleep $UMOUNT_WAIT_DELAY
        else
            break
        fi
    done
    exit
fi

F=$(echo $@|sed 's/,upperdir.*//'|sed 's/.*lowerdir=//'|sed 's/.*://')
echo "In fow $F.squash" >> $LOG
if [ -e "${F}.squash" ] ; then
        echo "Mount squash $F" >> $LOG
        /usr/bin/squashfuse $F.squash $F >> $LOG 2>&1
fi

#echo "Doing fuse mount" >> $LOG
/usr/bin/fuse-overlayfs $@ >> $LOG 2>&1
RET=$?
D=$(echo $@|sed 's/.* //')
chmod a+rx ${D}
echo "$D" >> $LOG
ls -ld $D >> $LOG

# Start a process to watch the mount and unmount squash
# if possible
if [ -e "${F}.squash" ] ; then
        D=$(echo $@|sed 's/.* //')
        $0 wait $D $F  0<&- &>/dev/null &
fi

#sleep infinity
exit $RET
