1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
##
# Debug plugin for hoe.
#
# === Tasks Provided:
#
# check_manifest:: Verify the manifest.
# config_hoe:: Create a fresh ~/.hoerc file.
# debug_gem:: Show information about the gem.
module Hoe::Debug
include Rake::DSL if defined? ::Rake::DSL
Hoe::DEFAULT_CONFIG["exclude"] = /tmp$|CVS|TAGS|\.(svn|git|DS_Store)/
# :stopdoc:
DIFF = if Hoe::WINDOZE
"diff.exe"
else
if system("gdiff", __FILE__, __FILE__)
"gdiff" # solaris and kin suck
else
"diff"
end
end unless defined? DIFF
# :startdoc:
##
# Define tasks for plugin.
def define_debug_tasks
desc "Create a fresh ~/.hoerc file."
task :config_hoe do
with_config do |config, path|
File.open(path, "w") do |f|
YAML.dump(Hoe::DEFAULT_CONFIG.merge(config), f)
end
editor = ENV["EDITOR"] || "vi"
system "#{editor} #{path}" if ENV["SHOW_EDITOR"] != "no"
end
end
desc "Verify the manifest."
task :check_manifest => :clean do
check_manifest
end
desc "Show information about the gem."
task :debug_gem do
puts spec.to_ruby
end
task :isolate # stub
task :irb => :isolate do
name = spec.name.gsub("-", "/")
file = (spec.files.grep(/^lib\/#{name}\.rb$/).first ||
spec.files.grep(/^lib\/[^\/]*\.rb$/).first)
require = File.basename(file, ".rb") if file
require &&= "-r#{require}"
ruby "#{Hoe::RUBY_FLAGS} -S irb #{require}"
end
end
##
# Verifies your Manifest.txt against the files in your project.
def check_manifest
f = "Manifest.tmp"
require "find"
files = []
with_config do |config, _|
exclusions = config["exclude"]
Find.find "." do |path|
next unless File.file? path
next if path =~ exclusions
files << path[2..-1]
end
files = files.sort.join "\n"
File.open f, "w" do |fp| fp.puts files end
verbose = { :verbose => Rake.application.options.trace || Rake.verbose }
begin
sh "#{DIFF} -du Manifest.txt #{f}", verbose
ensure
rm f, **verbose
end
end
end
end
class Gem::Specification < Gem::BasicSpecification
alias old_ruby_code ruby_code
def ruby_code(obj)
old_ruby_code obj
rescue Gem::Exception => e
case e.message
when /OpenSSL/
"nil"
else
raise
end
end
end unless Gem::VERSION >= "3.1.0"
|