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

Reply via email to