#!/usr/bin/perl

# Description: Returns best Unihedron SQM-LE reading from previous log files.

use DateTime;

# Grab command line arguments
  foreach (@ARGV) {
     if(substr($_, 0, 2) eq "-h") {
	print STDERR "Usage: $0 [options]\n";
	print STDERR "  Example:\n";
	print STDERR "       $0 \n";
	exit;
     }
  }
$darkest{0};

# Gather all log filenames

@files = <*>;
foreach $file (@files) {
	if (substr($file,-3) eq "log"){
# # 		print $file . "\n";

		#Determine previous day noon marker
		$thisfiletime = DateTime->new(
			year   => substr($file,0,4),
			month  => substr($file,4,2),
			day    => substr($file,6,2),
			time_zone => 'floating'
			);
		$prevdaytime = $thisfiletime->clone();
		$prevdaytime->subtract( days => 1 );

		#Make sure a hash entry exists
		if (! exists $darkreadings{$thisfiletime}) {$darkreadings{$thisfiletime}=[0,0]}
		if (! exists $darkreadings{$prevdaytime}) {$darkreadings{$prevdaytime}=[0,0]}

		open(LOGFILE, $file) or die "failed to open $file";
		$yesterday_log_error=0;
		@raw_data=<LOGFILE>;
		close(LOGFILE);
		# Go through each record of this file

		foreach $LINE_VAR (@raw_data) {
			# Get reading from record
			$reading=substr($LINE_VAR,9,6);

			#Determine if readings should be lumped with this day or previous noon
			if (substr($LINE_VAR,0,2)<12){
				$recnoontime = $prevdaytime;
			} else {
				$recnoontime = $thisfiletime
			}

			# Check if best (lowest value) then overwrite date and time stamps and reading.
			if ($reading>$darkreadings{$recnoontime}[1]) {
				$darkreadings{$recnoontime}[0]=substr($file,0,8)." ".substr($LINE_VAR,0,8);
				$darkreadings{$recnoontime}[1]=$reading;
			}
		}
	}
}

# Sort times oldest to newest
$darkest=0;
foreach $k (sort keys (%darkreadings)){
	if ($darkreadings{$k}[1]>0){
		# Print each best night value
		printf ("Starting at noon of %s at %s = %2.2fm\n", substr($k,0,10), $darkreadings{$k}[0], $darkreadings{$k}[1]."\n");
		if ($darkreadings{$k}[1]>$darkest){
			$darkest=$darkreadings{$k}[1];
			$darkest_key=$k;
		}
	}
}

#Print overall best
print "============================================================\n";
print "                       Darkest at ".$darkreadings{$darkest_key}[0]." =".$darkreadings{$darkest_key}[1]."m\n";

