#!/usr/bin/env bash
# nextfile -- output an unique filename ("date.nnn" or "prefix - date.nnn")

. lib.bash || exit

suffix=""
sep="."
opt_date=0

while getopts ":ds:S:" OPT; do
	case $OPT in
	d) opt_date=1;;
	s) suffix=$OPTARG;;
	S) sep=$OPTARG;;
	*) lib:die_getopts;;
	esac
done; shift $((OPTIND-1))

prefix="$1"
if [[ ! $suffix ]]; then
	suffix=${prefix##*.}
	prefix=${prefix%.*}
fi
prefix="${prefix:+$prefix$sep}"

date=$(date +"%Y-%m-%d")
dir="."

for (( count=0; count < 999; count++ )); do
	if (( opt_date )); then
		printf -v name "%s%s.%03d.%s" "$prefix" "$date" "$count" "$suffix"
	else
		printf -v name "%s%03d.%s" "$prefix" "$count" "$suffix"
	fi
	if [[ ! -e $dir/$name && ! -e $dir/.$name.tmp ]]; then
		echo "$dir/$name"
		exit 0
	fi
done

die "could not find an unique filename"
