pf-tools/pf-tools: Adding pretty colors for diff output

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Wed Aug 21 16:46:29 UTC 2013


details:   http://hg.debian.org/hg/pf-tools/pf-tools/rev/1bafb119e83d
changeset: 1202:1bafb119e83d
user:      Richard Phan
date:      Wed Aug 21 18:46:08 2013 +0200
description:
Adding pretty colors for diff output

diffstat:

 lib/PFTools/Update/ADDFILE.pm |   7 +++++--
 lib/PFTools/Update/Common.pm  |  27 +++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diffs (69 lines):

diff -r 3ab3c64672d3 -r 1bafb119e83d lib/PFTools/Update/ADDFILE.pm
--- a/lib/PFTools/Update/ADDFILE.pm	Tue Aug 20 15:23:56 2013 +0200
+++ b/lib/PFTools/Update/ADDFILE.pm	Wed Aug 21 18:46:08 2013 +0200
@@ -122,11 +122,14 @@
             Log("(action needed)");
         }
         if ( $options->{'diff'} ) {
+            my @diff;
             if ( !-e $dest ) {
-                print diff ( [], $tmp, { STYLE => "Unified" } );
+                @diff = split qq{\n}, diff( [], $tmp, {STYLE => "Unified"} );
+                print_diff_color( @diff );
             }
             else {
-                print diff ( $dest, $tmp, { STYLE => "Unified" } );
+                @diff = split qq{\n}, diff( $dest, $tmp, {STYLE => "Unified"} );
+                print_diff_color( @diff );
             }
         }
         print "on_config ...\n";
diff -r 3ab3c64672d3 -r 1bafb119e83d lib/PFTools/Update/Common.pm
--- a/lib/PFTools/Update/Common.pm	Tue Aug 20 15:23:56 2013 +0200
+++ b/lib/PFTools/Update/Common.pm	Wed Aug 21 18:46:08 2013 +0200
@@ -26,6 +26,7 @@
 use English qw( -no_match_vars );    # Avoids regex performance penalty
 use File::Copy;
 use File::Path qw( make_path );
+use Term::ANSIColor;
 
 use PFTools::Conf;
 use PFTools::Logger;
@@ -43,6 +44,7 @@
     dirname
     isipaddr
     ln_sfn
+    print_diff_color
 );
 
 our @EXPORT_OK = qw();
@@ -314,4 +316,29 @@
     return $tmp;
 }
 
+sub print_diff_color {
+    my (@diff) = @_;
+
+    foreach my $line ( @diff ) {
+        if ( $line =~ m/^\+/ ) {
+            print color q{bold cyan};
+            print qq{$line\n};
+            print color q{reset};
+        }
+        elsif ( $line =~ m/^-/ ) {
+            print color q{bold magenta};
+            print qq{$line\n};
+            print color q{reset};
+        }
+        elsif ( $line =~ m/^@@ / ) {
+            print color q{bold yellow};
+            print qq{$line\n};
+            print color q{reset};
+        }
+        else {
+            print qq{$line\n};
+        }
+    }
+}
+
 1;



More information about the pf-tools-commits mailing list