#!/usr/bin/env perl use strict; use warnings; use 5.010; use File::Slurp qw(read_file write_file); use JSON; my $json_str = read_file('stations.json'); my $stations = JSON->new->utf8->decode($json_str); @{$stations} = sort { $a->{name} cmp $b->{name} } @{$stations}; my $have_duplicates = 0; my @names = map { $_->{name} } @{$stations}; my @ds100 = map { $_->{ds100} } sort { $a->{ds100} cmp $b->{ds100} } @{$stations}; my @eva_ids = map { $_->{eva} } sort { $a->{eva} <=> $b->{eva} } @{$stations}; for my $i ( 1 .. $#names ) { if ( $names[ $i - 1 ] eq $names[$i] ) { say "Duplicate station name: $names[$i]"; $have_duplicates = 1; } } for my $i ( 1 .. $#ds100 ) { if ( $ds100[ $i - 1 ] eq $ds100[$i] ) { say "Duplicate DS100 code: $ds100[$i]"; $have_duplicates = 1; } } for my $i ( 1 .. $#eva_ids ) { if ( $eva_ids[ $i - 1 ] == $eva_ids[$i] ) { say "Duplicate EVA ID: $eva_ids[$i]"; $have_duplicates = 1; } } if ($have_duplicates) { say "Thank you for your contribution."; say "Please remove duplicate entries before opening a pull request."; } for my $station ( @{$stations} ) { $station->{eva} = 0 + $station->{eva}; if ( $station->{latlong} and $station->{latlong}[0] == 0 and $station->{latlong}[1] == 0 ) { $station->{latlong} = undef; } elsif ( not exists $station->{latlong} ) { $station->{latlong} = undef; } } my $json_out = JSON->new->utf8->canonical->pretty->encode($stations); write_file( 'stations.json', $json_out );