#!/usr/bin/env bash
set -e

showMem() {
	local pid
	pidof prince | while IFS=' ' read -r pid; do
		grep -iw kb /proc/$pid/status
	done
}

INITIAL_REPORT_COUNT=20
REPORT_INTERVAL=15

startTime=$(date +%s)
count=0
while IFS= read -r line; do
	count=$((count + 1))
	if [[ "$line" == *:\ true ]]; then
		printf .
	elif [[ "$line" == *:[[:blank:]]false ]]; then
		printf '!'
	else
		printf '?\n%s\n' "$line"
	fi >&2

	if [ $count -le $INITIAL_REPORT_COUNT -o "$(date +%s)" -ge $((lastShowMemTime + REPORT_INTERVAL)) ]; then
		time=$(date +%s)
		printf '\nduration:\t%s\n' $((time - startTime))
		printf 'count:\t%s\n' $count
		showMem
		lastShowMemTime=$time
	fi
done < <(java -cp prince.jar PrinceTest.java "$@")
