Package: vcheck Severity: wishlist Tags: patch I would like to use vcheck directly in a cron job, but apparently there's no way of getting "quiet" output when STDOUT is not a file.
I changed vcheck so that both verbose/noverbose switches can be used when redirecting to a file, and also emit a more terse output. I noticed the original author/page is unreachable, so I'm sending the changes to you. See the attached file. Thanks.
>From 4474fa1f38d96007e4241a54d8c1e58fb20292d4 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia <wav...@thregr.org> Date: Mon, 14 Nov 2011 15:28:08 +0100 Subject: [PATCH] Implement "--noverbose" when output is not a TTY. --verbose is implied when STDOUT is not a terminal and there's no way of switching it off. This patch allows to use --noverbose even when stdout is not a TTY, leaving the default as it was before. When running quiet, vcheck now doesn't print any output unless there's a version difference or error. The output is also cleaner: program: version text. --- vcheck | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) diff --git a/vcheck b/vcheck index f378b04..34bc9df 100755 --- a/vcheck +++ b/vcheck @@ -1068,7 +1068,7 @@ $no_ANSI = $opts{plain} = 1 if $config{plain} && !(exists $opts{plain} && !$opts{plain}); $eager_quote = $config{eagerquote}; $opts{verbose} = 1 - if $config{verbose} && !(exists $opts{verbose} && !$opts{verbose}); + if ($config{verbose} || !-t STDOUT) && !(exists $opts{verbose} && !$opts{verbose}); $grammar{prog}{sortblocks} = sub { ${${$_[0]}[1]}{url}[0] cmp ${${$_[1]}[1]}{url}[0] } if $config{sortby} eq 'url'; @@ -1129,7 +1129,7 @@ for my $name ( } } # check versions... - eprint "Checking for §B$name§N..."; + eprint "Checking for §B$name§N..." if(-t STDOUT); my($maxidx, $url, $re, $trans, %versions, @vers) = (-1); my @ver = ('') x 2; for (qw(url regex transform)) { @@ -1156,6 +1156,7 @@ for my $name ( $urls{$url} = $_ unless $config{nocache} } unless (length($_ || '')) { + eprint "§B$name§N:" if(!-t STDOUT); eprint " $try§Yconnection failed or timed out§N.\n"; $data{$name}{errors}++; last @@ -1169,6 +1170,7 @@ for my $name ( } unless (%versions) { $data{$name}{errors}++; + eprint "§B$name§N:" if(!-t STDOUT); eprint " $try§Rregex didn't match§N (" . (!length($data{$name}{version} || '') || $data{$name}{errors} >= $opts{error_tolerance} ? '§Rcheck of record suggested§N' : @@ -1177,6 +1179,7 @@ for my $name ( } elsif ($idx == $maxidx) { push @vers, [@ver]; if (ver_comp($ver[1], $data{$name}{version}) > 0) { + eprint "§B$name§N:" if(!-t STDOUT); eprint " new version: §G$ver[1]§N.\n"; $data{$name}{version} = $ver[1]; delete $data{$name}{errors}; @@ -1191,14 +1194,18 @@ for my $name ( } } else { if (ver_comp($ver[1], $data{$name}{version}) < 0) { + eprint "§B$name§N:" if(!-t STDOUT); eprint " §Ylatest version online lower than record§N!\n"; $data{$name}{errors}++ } else { $data{$name}{version} = $ver[1] unless length($data{$name}{version} || ''); - print $opts{verbose} || !-t STDOUT ? - " $data{$name}{version} remains latest version.\n" : - "\015" . ' ' x (16+length $name) . "\015"; # clear current line + if(-t STDOUT || $opts{verbose}) { + eprint "§B$name§N:" if(!-t STDOUT && $opts{verbose}); + print $opts{verbose} ? + " $data{$name}{version} remains latest version.\n" : + "\015" . ' ' x (16+length $name) . "\015"; # clear current line + } delete $data{$name}{errors} } } -- 1.7.7.2