#!/bin/bash
# config-scripts/src/share/task--dirclean/dircleansub.sh
# 
#  Copyright: ©2008–2011, Güralp Systems Ltd.
#  Author: Laurence Withers <lwithers@guralp.com>
#  License: GPLv3
#
#   Directory cleaner subform (per-directory config)
#

# Load support functions
script_dir=$(dirname $0)
. $script_dir/functions.sh


#
# Setup
#
cleancfg="/etc/directory-cleaner"
sel="$3"
CFGFILE="${cleancfg}/${sel}.local"


#
# Script actions
#
do_read() {
	gcs_var "d_delete"	"False"
	gcs_var "d_directory"	""
	gcs_var "d_filesort"	"lexical"
	gcs_var "d_maximum_size"	""
	gcs_var "d_maximum_files"	""

	if [ -r "$CFGFILE" ]
	then
	    gcs_var_o "delete"
	    gcs_var_o "directory"
	    gcs_var_o "filesort"
	    gcs_var_o "maximum_size"
	    gcs_var_o "maximum_files"
	fi
}

do_check() {
	gcs_read_vars

	if [ -z "${new_maximum_files}" -a -z "${new_maximum_size}" ]
	then
		gcs_err msg "At least one constraint (size/number of files) must be specified."
	fi

	if [ "${new_maximum_files}" == "0" ]
	then
		gcs_err "maximum_files"	"Cannot be 0."
	fi

	if [ "${new_maximum_size}" == "0" ]
	then
		gcs_err "maximum_size" "Cannot be 0."
	fi

	true
}

do_write() {
	do_check
	if gcs_truefalse "${new_delete:-false}"
	then
		rm "${CFGFILE}"
		exit 0
	fi

	if (( gcs_errors > 0 ))
	then	
		return
	fi

	gcs_ensure_cfgfile_exists "${CFGFILE}"

	gcs_set_varcf	"directory"	"${CFGFILE}"	"${new_directory}"
	gcs_set_varcf	"filesort"	"${CFGFILE}"	"${new_filesort/_/ }"
	gcs_set_varcf	"maximum_size"	"${CFGFILE}"	"${new_maximum_size}"
	gcs_set_varcf	"maximum_files"	"${CFGFILE}"	"${new_maximum_files}"
}

do_bar() {
	echo "tasktop	Tasks"
	echo "dirclean	Directory cleaner"
	echo "dircleansub/$sel	$sel"
}


#
# Run
#
case "X$1" in
X--check)	do_check	;;
X--write)	do_write	;;
X--read)	do_read		;;
X--navbar)	do_bar		;;
*)		exit 1		;;
esac

gcs_cleanup
exit 0
