97 lines
2.5 KiB
Perl
Executable File
97 lines
2.5 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
#-------------------------------------------------------------------------------
|
|
# (C) Crown copyright Met Office. All rights reserved.
|
|
# For further details please refer to the file COPYRIGHT.txt
|
|
# which you should have received as part of this distribution.
|
|
#-------------------------------------------------------------------------------
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Getopt::Long qw{GetOptions};
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
my ($u, @label);
|
|
GetOptions ('u' => \$u, 'L=s' => \@label);
|
|
|
|
# Check existence of files
|
|
for my $i (0 .. 1) {
|
|
die $ARGV[$i], ': not found, abort' unless $ARGV[$i] and -f $ARGV[$i];
|
|
}
|
|
|
|
my ($old, $new) = @ARGV;
|
|
|
|
if ($old =~ m#.svn/empty-file$#) {
|
|
print 'Skipping new file', "\n\n";
|
|
|
|
} elsif ($new =~ m#.svn/empty-file$#) {
|
|
print 'Skipping deleted file', "\n\n";
|
|
|
|
} elsif (-z $old) {
|
|
print 'Skipping as old file is empty (or does not exist)', "\n\n";
|
|
|
|
} elsif (-z $new) {
|
|
print 'Skipping as new file is empty (or deleted)', "\n\n";
|
|
|
|
} elsif (-B $new) {
|
|
print 'Skipping binary file', "\n\n";
|
|
|
|
} else {
|
|
# Print descriptions of files
|
|
if (@label >= 2) {
|
|
print '--- ', $label[0], "\n", '+++ ', $label[1], "\n\n";
|
|
}
|
|
|
|
# FCM_GRAPHIC_DIFF is the graphical diff tool command
|
|
my $cmd = (exists $ENV{FCM_GRAPHIC_DIFF} ? $ENV{FCM_GRAPHIC_DIFF} : 'xxdiff');
|
|
|
|
if ($cmd) {
|
|
my @options = ();
|
|
|
|
# Set options for labels if appropriate
|
|
if (@label >= 2) {
|
|
if ($cmd eq 'tkdiff') {
|
|
# Use tkdiff
|
|
@options = ('-L', $label[0], '-L', $label[1]);
|
|
|
|
} elsif ($cmd eq 'xxdiff') {
|
|
# Use xxdiff
|
|
@options = ('--title1', $label[0], '--title2', $label[1]);
|
|
}
|
|
}
|
|
|
|
# Execute the command
|
|
my @command = ($cmd, @options, $old, $new);
|
|
exec (@command) or die 'Cannot execute: ', join (' ', @command);
|
|
}
|
|
|
|
exit;
|
|
}
|
|
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
fcm_graphic_diff
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
fcm_graphic_diff [-u] [-L OLD_DESC] [-L NEW_DESC] OLD NEW
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Wrapper script which invokes a graphical diff tool. Its interface is
|
|
compatible with the "svn diff" command and can be used in combination with
|
|
its "--diff-cmd" option. The command prints the OLD_DESC and NEW_DESC if
|
|
they are both set. The two arguments OLD and NEW must be set and are the
|
|
files to compare. The graphical diff tool invoked depends on the value of
|
|
the FCM_GRAPHIC_DIFF environment variable. The command exits if the
|
|
environment variable is not set.
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
(C) Crown copyright Met Office. All rights reserved.
|
|
|
|
=cut
|