#!/bin/sh

export LANG=C
export LANGUAGE=C

PROG=`basename $0`

show_help()
{
#  -q, --quiet                       try to be more quiet;
#  -v, --verbose                     print a message for each action;
	cat <<EOF
$PROG - script to cleanup the set of used hasher dirs in parallel.
Usage: $PROG [options]

Options:
  -j <N>,--jobs <N> number of hashers used; --number 1 .. --number <N>
  -K,--keep-hasher-cache keep hasher cache
  -C,--cleanup-hasher-cache	 cleanup hasher cache
  -h, --help	show this text and exit.

Report bugs to http://bugzilla.altlinux.org/
EOF
	exit
}

rm_hashercache=
. autorepo-build-config
hasher_jobs=$AR_BUILDER_DEFAULT_PARLLEL_JOBS

TEMP=`getopt -n $PROG -o Cj:Kh -l jobs:,keep-hasher-cache,no-keep-hasher-cache,cleanup-hasher-cache,no-cleanup-hasher-cache,help -- "$@"` ||
	show_help
eval set -- "$TEMP"

while :; do
    case "$1" in
	-j|--jobs) hasher_jobs=$2; shift
		;;
	-C|--cleanup-hasher-cache) rm_hashercache=1
		;;
	-K|--keep-hasher-cache) rm_hashercache=
		;;
	--no-cleanup-hasher-cache) rm_hashercache=
		;;
	--no-keep-hasher-cache) rm_hashercache=1
		;;
	-h|--help) show_help
		;;
	--) shift; break
		;;
	*) echo "Error parsing arguments. see --help" ; exit 1
		;;
    esac
    shift
done

if [ -z "$hasher_jobs" ]; then
    echo "Please, specify a number of jobs to cleanup in parallel (-j option)"
    exit 1
fi

. parentlock-sh-functions
# remove if use your own trap
parentlock_set_unlock_workdir_trap_on_int_term_exit
parentlock_lock_workdir_or_exit

seq 1 $hasher_jobs | parallel --will-cite -j$hasher_jobs autorepo-buildhelper-do-hasher-cleanup --number {}

if [ -n "$rm_hashercache" ]; then
    autorepo-buildhelper-do-hasher-cleanup --cleanup-hasher-cache
fi

parentlock_unlock_workdir_safe
