Commit ba17712a authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

db-ris: Add --help and --version options

parent 044489b5
Loading
Loading
Loading
Loading
+48 −17
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ use 5.010;

our $VERSION = '0.0';

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

@@ -19,10 +19,13 @@ binmode( STDOUT, ':encoding(utf-8)' );

GetOptions(
	'd|date=s'  => \$date,
	'v|via=s'  => \$filter_via,
	'h|help'    => sub { show_help(0) },
	'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{!} ) {
@@ -40,6 +43,22 @@ my $status = Travel::Status::DE::DeutscheBahn->new(
	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;
}

sub display_result {
	my (@lines) = @_;

@@ -61,22 +80,17 @@ sub display_result {
	return;
}

for my $d ( $status->results() ) {

	my ( @via, @via_main, @via_show );
sub filter_via {
	my (@via) = @_;

	@via = $d->route;

	if ( $filter_via and not( first { $_ =~ m{$filter_via}io } @via ) ) {
		next;
	}
	my ( @via_main, @via_show, $last_stop );

	for my $stop (@via) {
		if ( $stop =~ m{ ?Hbf} ) {
			push( @via_main, $stop );
		}
	}
	pop(@via);
	$last_stop = pop(@via);

	if ( @via_main and @via and $via[0] eq $via_main[0] ) {
		shift(@via_main);
@@ -90,7 +104,7 @@ for my $d ( $status->results() ) {

		while ( @via_show < 3 and @via_main ) {
			my $stop = shift(@via_main);
			if ( $stop ~~ \@via_show or $stop eq $d->destination ) {
			if ( $stop ~~ \@via_show or $stop eq $last_stop ) {
				next;
			}
			push( @via_show, $stop );
@@ -101,11 +115,24 @@ for my $d ( $status->results() ) {
		$stop =~ s{ ?Hbf}{};
	}

	return @via_show;
}

for my $d ( $status->results() ) {

	my ( @via, @via_main, @via_show );

	@via = $d->route;

	if ( $filter_via and not( first { $_ =~ m{$filter_via}io } @via ) ) {
		next;
	}

	push(
		@output,
		[
			$d->time, $d->train,
			join( q{  }, @via_show ), $d->destination,
			join( q{  }, filter_via(@via) ), $d->destination,
			$d->platform, $d->info
		]
	);
@@ -176,6 +203,10 @@ destination) matches the perl regular expression I<regex>. The match is not
case-sensitive.  Use '^regex$' to match a full string, but be aware that this
may not work as expected.

=item B<-V>, B<--version>

Show version information

=back

=head1 EXIT STATUS