From 78983b4f3639b030f17202158e6dfe73b6939e66 Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Fri, 18 Apr 2025 12:43:32 +0200 Subject: dbris: Add --colour={auto,always,never} option --- bin/dbris | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'bin/dbris') diff --git a/bin/dbris b/bin/dbris index 3579341..ac79d1b 100755 --- a/bin/dbris +++ b/bin/dbris @@ -21,7 +21,8 @@ my ( $show_offers, $show_upsell_offers, $show_cross_offers ); my ( $first_class, $passengers ); my ( $developer_mode, $verbose ); my ( $json_output, $raw_json_output ); -my $use_cache = 1; +my $use_cache = 1; +my $use_colour = 'auto'; my $cache; my %known_mot = map { $_ => 1 } @@ -32,20 +33,20 @@ for my $arg (@ARGV) { $arg = decode( 'UTF-8', $arg ); } -my $output_bold = -t STDOUT ? "\033[1m" : q{}; -my $output_reset = -t STDOUT ? "\033[0m" : q{}; +my $output_bold = "\033[1m"; +my $output_reset = "\033[0m"; -my $output_fyi = -t STDOUT ? "\033[40;36m" : q{}; -my $output_unknown = -t STDOUT ? "\033[40;35m" : q{}; -my $output_good = -t STDOUT ? "\033[40;32m" : q{}; -my $output_warning = -t STDOUT ? "\033[40;33m" : q{}; -my $output_critical = -t STDOUT ? "\033[40;31m" : q{}; +my $output_fyi = "\033[40;36m"; +my $output_unknown = "\033[40;35m"; +my $output_good = "\033[40;32m"; +my $output_warning = "\033[40;33m"; +my $output_critical = "\033[40;31m"; -my $output_bold_fyi = -t STDOUT ? "\033[1;40;36m" : q{}; -my $output_bold_unknown = -t STDOUT ? "\033[1;40;35m" : q{}; -my $output_bold_good = -t STDOUT ? "\033[1;40;32m" : q{}; -my $output_bold_warning = -t STDOUT ? "\033[1;40;33m" : q{}; -my $output_bold_critical = -t STDOUT ? "\033[1;40;31m" : q{}; +my $output_bold_fyi = "\033[1;40;36m"; +my $output_bold_unknown = "\033[1;40;35m"; +my $output_bold_good = "\033[1;40;32m"; +my $output_bold_warning = "\033[1;40;33m"; +my $output_bold_critical = "\033[1;40;31m"; GetOptions( 'a|arrive=s' => sub { $arrival = 1; $time = $_[1] }, @@ -64,12 +65,25 @@ GetOptions( 'v|verbose' => \$verbose, 'V|version' => \&show_version, 'cache!' => \$use_cache, + 'color=s' => \$use_colour, + 'colour=s' => \$use_colour, 'devmode' => \$developer_mode, 'json' => \$json_output, 'raw-json' => \$raw_json_output, ) or show_help(1); +if ( $use_colour eq 'auto' + and ( not -t STDOUT or ( defined $ENV{TERM} and $ENV{TERM} eq 'dumb' ) ) + or $use_colour eq 'never' ) +{ + $output_bold = $output_reset = q{}; + $output_fyi = $output_unknown = $output_good = $output_warning + = $output_critical = q{}; + $output_bold_fyi = $output_bold_unknown = $output_bold_good + = $output_bold_warning = $output_bold_critical = q{}; +} + if ($use_cache) { my $cache_path = ( $ENV{XDG_CACHE_HOME} // "$ENV{HOME}/.cache" ) . '/Travel-Routing-DE-DBRIS'; @@ -553,6 +567,14 @@ connections, with an optional minimum stopover I given in minutes. Request connections that arrive on or after I. Overrides B<--time>. +=item B<--colour>, B<--color> B|B|B + +By default, B uses ANSI escape codes for output formatting whenever +the output is connected to a terminal and the TERM environment variable is not +set to C<< dumb >>. B<--colour=always> causes it to always use output +formatting regardless of terminal setup, and B<--colour=never> disables any +formatting. B<--colour=auto> restores the default behaviour. + =item B<-d>, B<--date> I[I] Request connections for a specific day. -- cgit v1.2.3