#!/bin/bash

set -euE

echo "$0 $@ [$$] START" >&2

if [ "${1:-}" == '--help' ]; then
	echo "Info: $0 - утилита для чтения почты с лидами"
	echo "Usage: $0 [--help]"
	echo "Example: $0 - обновить и прочитать почту"
	exit 0
fi

cleanup() {
	local mailbox
	for mailbox in $(find /var/lib/eva-app/mail/ -mindepth 2 -maxdepth 2 -type d); do
		# Зануляем содержимое писем старше 30 дней. Теоретически или их занесут в БД,
		# создав сделку, либо всё равно это мусор. Из БД они уже не пропадут
		[ ! -d "$mailbox/INBOX/cur/" ] && continue
		find "$mailbox/INBOX/cur/" -mtime +30 -type f ! -name ".offlineimaprc" ! -empty \
			| xargs -t -L 1 -P 1 -r truncate -s 0
	done
	return 0
}

main() {
	local mailbox config
	for mailbox in $(find /var/lib/eva-app/mail/ -mindepth 2 -maxdepth 2 -type d); do
		echo "$0 $@ [$$] JOB START: processing of $mailbox" >&2
		config="$mailbox/.offlineimaprc"
		if [ ! -f "$config" ]; then
			echo "$0 $@ [$$] JOB SKIPPED processing of $mailbox because no config" >&2
			continue
		fi
		echo "$0 $@ [$$] JOB INFO: fetching $mailbox mail" >&2
		if ! timeout -s 15 -k 55s 50s offlineimap -c "$config"; then
			echo "$0 $@ [$$] JOB FAILED processing of $mailbox fetching errors" >&2
			continue
		fi
		echo "$0 $@ [$$] JOB INFO: reading $mailbox mail" >&2
		timeout -s 15 -k 55s 50s python3 /opt/eva-app/bin/mail2lead.py -m "$mailbox"
		echo "$0 $@ [$$] JOB DONE: processing of $mailbox" >&2
	done
	cleanup
	return 0
}

main "$@"
echo "$0 $@ [$$] SUCCESS" >&2
exit 0
