38 lines
969 B
Ruby
Executable File
38 lines
969 B
Ruby
Executable File
#!/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
|