diff-highlight: split code into module

The diff-so-fancy project is also written in perl, and most
of its users pipe diffs through both diff-highlight and
diff-so-fancy. It would be nice if this could be done in a
single script. So let's pull most of diff-highlight's code
into its own module which can be used by diff-so-fancy.

In addition, we'll abstract a few basic items like reading
from stdio so that a script using the module can do more
processing before or after diff-highlight handles the lines.
See the README update for more details.

One small downside is that the diff-highlight script must
now be built using the Makefile. There are ways around this,
but it quickly gets into perl arcana. Let's go with the
simple solution. As a bonus, our Makefile now respects the
PERL_PATH variable if it is set.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2017-06-15 12:30:55 -04:00
committed by Junio C Hamano
parent fd99e2bda0
commit 0c977dbc81
5 changed files with 82 additions and 19 deletions

View File

@@ -1,5 +1,20 @@
# nothing to build
all:
all: diff-highlight
test:
PERL_PATH = /usr/bin/perl
-include ../../config.mak
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
diff-highlight: shebang.perl DiffHighlight.pm diff-highlight.perl
cat $^ >$@+
chmod +x $@+
mv $@+ $@
shebang.perl: FORCE
@echo '#!$(PERL_PATH_SQ)' >$@+
@cmp $@+ $@ >/dev/null 2>/dev/null || mv $@+ $@
test: all
$(MAKE) -C t
.PHONY: FORCE