#!/usr/bin/env perl
use strict;
use warnings;
use 5.018;
our $VERSION = '0.00';
use Getopt::Long qw(:config no_ignore_case);
use List::Util qw(max);
use Travel::Status::DE::IRIS;
use Travel::Status::DE::IRIS::Stations;
my %train_type;
my ( $date, $time );
my $arrivals = 0;
my $filter_via;
my $ignore_late = 0;
my $show_full_route = 0;
my $types = q{};
my $language;
my @output;
binmode( STDOUT, ':encoding(utf-8)' );
GetOptions(
'a|arrivals' => \$arrivals,
'd|date=s' => \$date,
'f|full-route' => \$show_full_route,
'h|help' => sub { show_help(0) },
'l|lang=s' => \$language,
'L|ignore-late' => \$ignore_late,
'm|mot=s' => \$types,
't|time=s' => \$time,
'v|via=s' => \$filter_via,
'V|version' => \&show_version,
) or show_help(1);
if ( @ARGV != 1 ) {
show_help(1);
}
my ($station) = @ARGV;
$station = get_station($station);
for my $type ( split( qr{,}, $types ) ) {
if ( substr( $type, 0, 1 ) eq q{!} ) {
$train_type{ substr( $type, 1 ) } = 0;
}
else {
$train_type{$type} = 1;
}
}
my $status = Travel::Status::DE::IRIS->new(
date => $date,
language => $language,
mot => \%train_type,
station => $station,
time => $time,
mode => $arrivals ? 'arr' : 'dep',
);
sub get_station {
my ($input_name) = @_;
my @stations
= Travel::Status::DE::IRIS::Stations::get_station_by_name($input_name);
if ( @stations == 0 ) {
say STDERR "No station matches '$input_name'";
}
elsif ( @stations == 1 ) {
return $stations[0][0];
}
else {
say STDERR "The input '$input_name' is ambiguous. Please choose one "
. 'of the following:';
say STDERR join( "\n", map { $_->[1] } @stations );
exit(1);
}
}
sub show_help {
my ($code) = @_;
print 'Usage: db-ris [-d
] [-m ] [-t