#!/usr/local/bin/perl

use v5.10.1;
use strict;
use warnings FATAL => 'all';
use experimental qw(smartmatch);

use Sport::Analytics::NHL::LocalConfig;
use Sport::Analytics::NHL;
use Sport::Analytics::NHL::Usage;

my @accepts_opts = qw(
	:compile :merge data-dir force test :season
);

my @accepts_args = (
	{
		name        => 'GAME_IDS',
		description => 'Our 9-digit game ids that are present in the file system',
	}
);

my $what_it_does = 'Normalize the normalized NHL report, providing default values and testing dependent values';
my $opts = gopts($what_it_does, \@accepts_opts, \@accepts_args);
my $hockeydb = Sport::Analytics::NHL->new($opts);
my $query = {};
if ($opts->{start_season} || $opts->{stop_season}) {
	$query->{season} = {
		$opts->{start_season} ? ('$gte' => $opts->{start_season}) : (),
		$opts->{stop_season}  ? ('$lte' => $opts->{stop_season})  : (),
	}
}
my @game_ids = $hockeydb->{db}{dbh}->get_collection('schedule')->find(
	$query, {_id => 0, game_id => 1}
)->all();
$hockeydb->normalize($opts, map($_->{game_id},@game_ids));


=head1 NAME

normalize-schedule - normalize (recompile if necessary) the merged NHL boxscore referenced in schedule.

=head1 SYNOPSIS

Normalizes the merged NHL reports into a Storable file (normalized.storable). Also produces a JSON for convenience (normalized.json)

 Usage: normalize-schedule [Options] Arguments
 Options:
	-h|--help                       print this message and exit
	-V|--version                    print version and exit
	-v|--verbose                    produce verbose output to STDERR
	-d|--debug                      produce debug output to STDERR
	--no-compile                    Do not compile file even if storable is absent
	--recompile                     Compile file even if storable is present
	--no-merge                      Do not merge files even if storable is absent
	--remerge                       Merge files even if storable is present
	-E|--data-dir        DIR        Data directory root (default /misc/nhl)
	-f|--force                      override/overwrite existing data
	--test                          Test the validity of the files (use with caution)
	-s|--start-season    SEASON     Start at season SEASON (default 2018)
	-S|--stop-season     SEASON     Stop at season SEASON (default 2018)
	-T|--stage           STAGE      Scrape stage STAGE (2: REGULAR, 3: PLAYOFF, Arguments:
	GAME_IDS             Our 9-digit game ids that are present in the file system

=cut

=head1 AUTHOR

More Hockey Stats, C<< <contact at morehockeystats.com> >>

=head1 BUGS

Please report any bugs or feature requests to C<contact at morehockeystats.com>, or through
the web interface at L<https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Sport::Analytics::NHL>.  I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.




=head1 SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Sport::Analytics::NHL


You can also look for information at:

=over 4

=item * RT: CPAN's request tracker (report bugs here)

L<https://rt.cpan.org/NoAuth/Bugs.html?Dist=Sport::Analytics::NHL>

=item * AnnoCPAN: Annotated CPAN documentation

L<http://annocpan.org/dist/Sport::Analytics::NHL>

=item * CPAN Ratings

L<https://cpanratings.perl.org/d/Sport::Analytics::NHL>

=item * Search CPAN

L<https://metacpan.org/release/Sport::Analytics::NHL>

=back


=head1 ACKNOWLEDGEMENTS


=head1 LICENSE AND COPYRIGHT

Copyright 2018 More Hockey Stats.

This program is released under the following license: gnu


=cut

1;