From 8f5ec8ce7b92038e0e24ac2e3def67313ffcbe71 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 2 Jan 2014 05:56:05 +0100 Subject: add primitive db-iris script (documentation not yet up-to-date) --- bin/db-iris | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100755 bin/db-iris (limited to 'bin/db-iris') diff --git a/bin/db-iris b/bin/db-iris new file mode 100755 index 0000000..2d7fe86 --- /dev/null +++ b/bin/db-iris @@ -0,0 +1,280 @@ +#!/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