X-Git-Url: http://git.shiar.nl/barcat.git/blobdiff_plain/0efc8a341754dc7b8629008d0e7dbcba46d31af5..cf2b124da358c7fb2e00c7b8e814b6b78bdfe004:/barcat diff --git a/barcat b/barcat index 5863c4c..a4ed12f 100755 --- a/barcat +++ b/barcat @@ -1,4 +1,4 @@ -#!/usr/bin/env perl +#!/usr/bin/perl -CA use 5.018; use warnings; use utf8; @@ -47,6 +47,9 @@ GetOptions(\%opt, ); }, 'markers|m=s', + 'spark:s' => sub { + $opt{spark} = [split //, $_[1] || '⎽▁▂▃▄▅▆▇█']; + }, 'stat|s!', 'unmodified|u!', 'width|w=i', @@ -60,6 +63,7 @@ $opt{trim} *= $opt{width} / 100 if $opt{trimpct}; $opt{units} = [split //, ' kMGTPEZYyzafpnμm'] if $opt{'human-readable'}; $opt{anchor} //= qr/\A/; $opt{'value-length'} = 6 if $opt{units}; +$opt{'value-length'} = 1 if $opt{unmodified}; my (@lines, @values, @order); @@ -90,6 +94,7 @@ while (readline) { push @order, $1 if length $1; if (defined $opt{trim} and defined $1) { my $trimpos = abs $opt{trim}; + $trimpos -= length $1 if $opt{unmodified}; if ($trimpos <= 1) { $_ = substr $_, 0, 1; } @@ -164,6 +169,12 @@ sub sival { while ($nr <= $#lines) { $nr >= $opt{hidemax} and last if defined $opt{hidemax}; my $val = $values[$nr]; + + if ($opt{spark}) { + print $opt{spark}->[ ($val - $minval) / $maxval * $#{$opt{spark}} ]; + next; + } + if (length $val) { my $color = !$opt{color} ? undef : $val == $order[0] ? 32 : # max @@ -176,9 +187,11 @@ while ($nr <= $#lines) { printf '%-*s', $len + length($val), $line; print $barmark[$_] // '-' for 1 .. $size && (($values[$nr] || 0) - $minval) * $size + .5; say ''; - +} +continue { $nr++; } +say '' if $opt{spark}; } show_lines(); @@ -304,7 +317,7 @@ Total statistics after all data. =item -u, --unmodified -Do not strip leading whitespace. +Do not reformat values, keeping leading whitespace. Keep original value alignment, which may be significant in some programs. =item --value-length= @@ -398,7 +411,7 @@ Activity of the last days (substitute date C<-v-{}d> on BSD): ( git log --pretty=%ci --since=30day | cut -b-10 seq 0 30 | xargs -i date +%F -d-{}day ) | - sort | uniq -c | awk '$1--' | graph + sort | uniq -c | awk '$1--' | graph --spark =head1 AUTHOR