show-pretty-diff 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/perl -w
  2. # Copyright (C) 2011 Apple Inc. All rights reserved.
  3. #
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. # 1. Redistributions of source code must retain the above copyright
  8. # notice, this list of conditions and the following disclaimer.
  9. # 2. Redistributions in binary form must reproduce the above copyright
  10. # notice, this list of conditions and the following disclaimer in the
  11. # documentation and/or other materials provided with the distribution.
  12. #
  13. # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
  14. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  15. # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  16. # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
  17. # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  18. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  19. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  20. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  21. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  22. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  23. # THE POSSIBILITY OF SUCH DAMAGE.
  24. use strict;
  25. use FindBin;
  26. use File::Temp qw(tempfile);
  27. use lib $FindBin::Bin;
  28. use webkitdirs;
  29. my $inputPath = "";
  30. if ($ARGV[0]) {
  31. $inputPath = $ARGV[0]
  32. } else {
  33. # Create a temporary file for STDIN.
  34. # FIXME: We can probably avoid putting this on the disk by directly piping
  35. # to prettify.rb via IPC::Open2.
  36. my $inputTempFileHandle;
  37. ($inputTempFileHandle, $inputPath) = tempfile(
  38. "inputtemp-XXXXXXXX",
  39. DIR => File::Spec->tmpdir(),
  40. SUFFIX => ".diff",
  41. UNLINK => 0,
  42. );
  43. while (<STDIN>) {
  44. print $inputTempFileHandle $_;
  45. }
  46. close($inputTempFileHandle);
  47. }
  48. # Create a temporary file for prettified patch.
  49. my ($prettydiffFileHandle, $prettydiffPath) = tempfile(
  50. "prettydiff-XXXXXXXX",
  51. DIR => File::Spec->tmpdir(),
  52. SUFFIX => ".html",
  53. UNLINK => 0,
  54. );
  55. close($prettydiffFileHandle);
  56. my $prettyPatchDir = sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/";
  57. my $prettyPatchTool = sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/prettify.rb";
  58. my $pathToPrettify = "ruby -I " . sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/ " . sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/prettify.rb";
  59. system "$pathToPrettify " . quotemeta($inputPath) . " > $prettydiffPath";
  60. if (isAppleMacWebKit()) {
  61. system "open", $prettydiffPath;
  62. } elsif (isCygwin()) {
  63. system "cygstart",$prettydiffPath;
  64. } elsif (isWindows()) {
  65. system "start", $prettydiffPath;
  66. } elsif (isLinux() && `which xdg-open`) {
  67. system "xdg-open", $prettydiffPath;
  68. } else {
  69. print "Created prettified diff at " . $prettydiffPath . ".";
  70. }