blob: a9c211fbe1c86f1067203ffd216e253fa4de8b08 [file] [log] [blame]
#!/usr/bin/env ruby
require 'optparse'
require 'pathname'
require 'webrick/htmlutils'
$LOAD_PATH << Pathname.new(__FILE__).dirname.realpath.to_s
require 'PrettyPatch'
BACKTRACE_SEPARATOR = "\n\tfrom "
options = { :html_exceptions => false }
OptionParser.new do |opts|
opts.banner = "Usage: #{File.basename($0)} [options] [patch-file]"
opts.separator ""
opts.on("--html-exceptions", "Print exceptions to stdout as HTML") { |h| options[:html_exceptions] = h }
end.parse!
patch_data = nil
if ARGV.length == 0 || ARGV[0] == '-' then
patch_data = $stdin.read
else
File.open(ARGV[0]) { |file| patch_data = file.read }
end
begin
puts PrettyPatch.prettify(patch_data)
rescue => exception
raise unless options[:html_exceptions]
backtrace = exception.backtrace
backtrace[0] += ": " + exception + " (" + exception.class.to_s + ")"
print "<pre>\n", WEBrick::HTMLUtils::escape(backtrace.join(BACKTRACE_SEPARATOR)), "\n</pre>\n"
end