#!/bin/sh

# USAGE:
# PARENTLOCK_FILE=.lock
#. autorepo-lock-sh-functions
#autorepo_lock_workdir_or_exit
#...
#autorepo_unlock_workdir_safe

if [ -z "$PARENTLOCK_FILE" ]; then
    echo internal error: not defined parentlock file
    exit 1
fi

autorepo_unlock_workdir_safe() {
    parentlock --unlock --lockfile "$PARENTLOCK_FILE" $$
}

#autorepo_unlock_workdir_force() {
#    rm -rf $PARENTLOCK_FILE ||:
#}
#autorepo_lock_workdir_force() {
#   echo $$ > $PARENTLOCK_FILE
#}
autorepo_unlock_workdir_trap() {
    autorepo_unlock_workdir_safe
    exit
}

trap autorepo_unlock_workdir_trap INT TERM EXIT

autorepo_lock_workdir_or_exit() {
    if ! parentlock --lock --lockfile "$PARENTLOCK_FILE" $$; then
	echo "can't get lock $PARENTLOCK_FILE, exiting ..."
	exit 1
    fi
}

