./bin/verify_countries.pl


#!/usr/bin/env perl
use Modern::Perl '2014';
use experimental 'switch', 'postderef';
use lib './lib';
use Path::Tiny;
use Data::Dump 'pp';
use Set::Tiny 'set';

use MGH_Biostat::TravEpi::SimpleRulesBase::Countries;

my $canon_countries = set(keys MGH_Biostat::TravEpi::SimpleRulesBase::Countries::_load_country_map()->%*);

my $trans_countries;
{
	my $file = path('templates/dynamic.strings')->openr_utf8;
	my $current_stanza = '';
	my $keys = {};
	while(<$file>) {
		chomp;
		next if m/^#/;
		next unless m/\S/;
		if (m/^\[(\w+)\]/) {
			$current_stanza = $1;
			next;
		}

		if ($current_stanza eq 'countries') {
			my ($key, $rest) = split /\s*:\s*/, $_, 2;
			$keys->{$key}++;
		}
	}
	close($file);

	$trans_countries = set(keys $keys->%*);
}

if ($canon_countries->is_equal($trans_countries)) {
	say "Country sets are equal.";
}
else {
	my $canon_only = $canon_countries->difference($trans_countries);
	my $trans_only = $trans_countries->difference($canon_countries);

	say "In master list only: " . join(', ' => sort $canon_only->members);
	say "In translated list only: " . join(', ' => sort $trans_only->members);
}