Skip to content
Snippets Groups Projects
db-ris 4.68 KiB
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;

our $VERSION = '1.01';

use Getopt::Long qw(:config no_ignore_case);
use List::Util qw(first max);
use Travel::Status::DE::DeutscheBahn;

my %train_type;

my ( $date, $time );
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(
	'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);

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::DeutscheBahn->new(
	date     => $date,
	language => $language,
	mot      => \%train_type,
	station  => shift || show_help(1),
	time     => $time,
);

sub show_help {
	my ($code) = @_;

	print 'Usage: db-ris [-d <dd.mm.yyyy>] [-m <motlist>] [-t <time>] '
	  . "[-v <via>] <station>\n"
	  . "See also: man db-ris\n";

	exit $code;
}

sub show_version {
	say "db-ris version ${VERSION}";

	exit 0;
}