def define_spec
self.spec = Gem::Specification.new do |s|
dirs = Dir['{lib,ext}']
s.name = name
s.version = version if version
s.summary = summary
s.email = email
s.homepage = Array(url).first
s.rubyforge_project = rubyforge_name
s.description = description
s.files = File.read("Manifest.txt").split(/\r?\n\r?/)
s.executables = s.files.grep(/^bin/) { |f| File.basename(f) }
s.bindir = "bin"
s.require_paths = dirs unless dirs.empty?
s.rdoc_options = ['--main', readme_file]
s.has_rdoc = true
s.post_install_message = post_install_message
s.test_files = Dir[*self.test_globs]
case author
when Array
s.authors = author
else
s.author = author
end
extra_deps.each do |dep|
s.add_dependency(*dep)
end
extra_dev_deps.each do |dep|
s.add_development_dependency(*dep)
end
s.extra_rdoc_files += s.files.grep(/txt$/)
s.extra_rdoc_files.reject! { |f| f =~ %r%^(test|spec|vendor|template|data|tmp)/% }
s.extra_rdoc_files += @extra_rdoc_files
spec_extras.each do |msg, val|
case val
when Proc
val.call(s.send(msg))
else
s.send "#{msg}=", val
end
end
end
unless self.version then
version = nil
spec.files.each do |file|
next unless File.exist? file
version = File.read(file)[/VERSION = ([\"\'])([\d\.]+)\1/, 2]
break if version
end
spec.version = self.version = version
end
raise "Need version" unless self.version
end