swap -C to enable color, -M to disable
[barcat.git] / barcat
diff --git a/barcat b/barcat
index b939ea95ae88a91ddd0fe89b2017ecb1ae77259d..c0292257676ade42c1a2b5c7a9d429d092bd92f7 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -14,8 +14,8 @@ require Getopt::Long;
 Getopt::Long->import('2.33', qw( :config gnu_getopt ));
 GetOptions(\%opt,
        'ascii|a!',
-       'color|c!',
-       'C' => sub { $opt{color} = 0 },
+       'color|C!',
+       'M' => sub { $opt{color} = 0 },
        'field|f=s' => sub {
                eval {
                        local $_ = $_[1];
@@ -105,7 +105,7 @@ GetOptions(\%opt,
 }
 
 $opt{width} ||= $ENV{COLUMNS} || qx(tput cols) || 80 unless $opt{spark};
-$opt{color} //= -t *STDOUT;  # enable on tty
+$opt{color} //= $ENV{NO_COLOR} ? 0 : -t *STDOUT;  # enable on tty
 $opt{'graph-format'} //= '-';
 $opt{trim}   *= $opt{width} / 100 if $opt{trimpct};
 $opt{units}   = [split //, ' kMGTPEZYyzafpn'.($opt{ascii} ? 'u' : 'μ').'m']
@@ -285,13 +285,13 @@ say(
 
 while ($nr <= $limit) {
        my $val = $values[$nr];
-       my $rel = length $val && $range && ($val - $minval) / $range;
+       my $rel = length $val && $range && min(1, ($val - $minval) / $range);
        my $color = !length $val || !$opt{palette} ? undef :
                $val == $order[0] ? $opt{palette}->[-1] : # max
                $val == $order[-1] ? $opt{palette}->[0] : # min
                $opt{palette}->[ $rel * ($#{$opt{palette}} - 1) + 1 ];
        my $indicator = $opt{indicators} && $opt{indicators}->[
-               !$val || !$#{$opt{indicators}} ? 0 : # blank
+               !length($val) || !$#{$opt{indicators}} ? 0 : # blank
                $#{$opt{indicators}} < 2 ? 1 :
                $val >= $order[0] ? -1 :
                $rel * ($#{$opt{indicators}} - 1e-14) + 1
@@ -369,7 +369,7 @@ Usage:                                               /\_/\
                                                     (u   u)
 Options:
   -a, --[no-]ascii         Restrict user interface to ASCII characters
-  -c, --[no-]color         Force colored output of values and bar markers
+  -C, --[no-]color         Force colored output of values and bar markers
   -f, --field=(N|REGEXP)   Compare values after a given number of whitespace
                            separators
       --header             Prepend a chart axis with minimum and maximum
@@ -430,11 +430,13 @@ Restrict user interface to ASCII characters,
 replacing default UTF-8 by their closest approximation.
 Input is always interpreted as UTF-8 and shown as is.
 
-=item -c, --[no-]color
+=item -C, --[no-]color
 
 Force colored output of values and bar markers.
 Defaults on if output is a tty,
 disabled otherwise such as when piped or redirected.
+Can also be disabled by setting I<-M>
+or the I<NO_COLOR> environment variable.
 
 =item -f, --field=(<number> | <regexp>)