]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] rspamd_stats: Output progress info on STDERR 2084/head
authorAlexander Moisseev <moiseev@mezonplus.ru>
Sat, 17 Mar 2018 16:03:53 +0000 (19:03 +0300)
committerAlexander Moisseev <moiseev@mezonplus.ru>
Sat, 17 Mar 2018 16:03:53 +0000 (19:03 +0300)
and only if it is connected to the terminal

utils/rspamd_stats.pl

index 102654dbaf410cec8bd68dd65ce2709954a0fcbc..3a8affce15f2a24be10a42c68ffd2b9aef9af52d 100755 (executable)
@@ -113,17 +113,16 @@ elsif ( -d "$log_file" ) {
     open( $rspamd_log, "-|", "$dc $log_dir/$_" )
       or die "cannot execute $dc $log_dir/$_ : $!";
 
-    if (!$json) {
-      printf "\033[J  Parsing log files: [%d/%d] %s\033[G", $log_file_num++, scalar @logs, $_;
-      $spinner_update_time = 0;   # Force spinner update
-      &spinner;
-    }
+    printf {interactive(*STDERR)} "\033[J  Parsing log files: [%d/%d] %s\033[G", $log_file_num++, scalar @logs, $_;
+    $spinner_update_time = 0;   # Force spinner update
+    &spinner;
 
     &ProcessLog;
 
     close($rspamd_log)
       or warn "cannot close $dc $log_dir/$_: $!";
   }
+  print {interactive(*STDERR)} "\033[J\033[G";   # Progress indicator clean-up
 }
 else {
   my $ext = ($log_file =~ /[^.]+\.?([^.]*?)$/)[0];
@@ -630,13 +629,11 @@ sub GetLogfilesList {
       splice( @logs, $exclude_logs, $num_logs ||= @logs - $exclude_logs );
 
   # Loop through array printing out filenames
-  if (!$json) {
-    print "\nLog files to process:\n";
-    foreach my $file (@logs) {
-      print "  $file\n";
-    }
-    print "\n";
+  print {interactive(*STDERR)} "\nLog files to process:\n";
+  foreach my $file (@logs) {
+    print {interactive(*STDERR)} "  $file\n";
   }
+  print {interactive(*STDERR)} "\n";
 
   return @logs;
 }
@@ -701,9 +698,9 @@ sub numeric {
 sub spinner {
     my @spinner = qw{/ - \ |};
     return
-      if ( $json || ( time - $spinner_update_time ) < 1 );
+      if ( ( time - $spinner_update_time ) < 1 );
     $spinner_update_time = time;
-    printf "%s\r", $spinner[ $spinner_update_time % @spinner ];
+    printf {interactive(*STDERR)} "%s\r", $spinner[ $spinner_update_time % @spinner ];
     select()->flush();
 }