require 'rake' require "rake/clean" require 'rake/testtask' require 'rdoc/task' $:.unshift 'lib' require "xmpp4r" ############################################################################## # OPTIONS ############################################################################## PKG_NAME = 'xmpp4r' PKG_VERSION = Jabber::XMPP4R_VERSION AUTHORS = ['Lucas Nussbaum', 'Stephan Maka', 'Glenn Rempe', 'Kaoru Maeda', 'Harisankar P S'] EMAIL = "mailme@hsps.in" HOMEPAGE = "http://xmpp4r.github.io" SUMMARY = "XMPP/Jabber library for ruby" # These are the common rdoc options that are shared between generation of # rdoc files using BOTH 'rake rdoc' and the installation by users of a # RubyGem version which builds rdoc's along with its installation. Any # rdoc options that are ONLY for developers running 'rake rdoc' should be # added in the 'RDoc::Task' block below. RDOC_OPTIONS = [ "--quiet", "--title", SUMMARY, "--opname", "index.html", "--main", "lib/xmpp4r.rb", "--line-numbers", "--inline-source" ] # Extra files outside of the lib dir that should be included with the rdocs. RDOC_FILES = (%w( README.rdoc README_ruby19.txt CHANGELOG LICENSE COPYING )).sort # The full file list used for rdocs, tarballs, gems, and for generating the xmpp4r.gemspec. PKG_FILES = (%w( Rakefile setup.rb xmpp4r.gemspec ) + RDOC_FILES + Dir["{lib,test,data,tools}/**/*"]).sort ############################################################################## # DEFAULT TASK ############################################################################## # The task that will run when a simple 'rake' command is issued. # Default to running the test suite as that's a nice safe command # we should run frequently. task :default => [:test] ############################################################################## # TESTING TASKS ############################################################################## Rake::TestTask.new do |t| t.libs << "test" t.test_files = ['test/ts_xmpp4r.rb'] end ############################################################################## # DOCUMENTATION TASKS ############################################################################## # RDOC ####### RDoc::Task.new do |rd| # which dir should rdoc files be installed in? rd.rdoc_dir = 'rdoc' # the full list of files to be included rd.rdoc_files.include(RDOC_FILES, "lib/**/*.rb") # the full list of options that are common between gem build # and 'rake rdoc' build of docs. rd.options = RDOC_OPTIONS # Devs Only : Uncomment to also document private methods in the rdocs # Please don't check this change in to the source repo. #rd.options << '--all' # Devs Only : Uncomment to generate dot (graphviz) diagrams along with rdocs. # This requires that graphiz (dot) be installed as a local binary and on your path. # See : http://www.graphviz.org/ # Please don't check this change in to the source repo as it introduces a binary dependency. #rd.options << '--diagram' #rd.options << '--fileboxes' end # RCOV ####### # Conditional require rcov/rcovtask if present begin require 'rcov/rcovtask' Rcov::RcovTask.new do |t| t.test_files = ['test/ts_xmpp4r.rb'] t.output_dir = "coverage" end rescue LoadError end # DOT GRAPH ############ desc "Generate requires graph" task :gen_requires_graph do sh %{cd tools; ./gen_requires.bash} end ############################################################################## # SYNTAX CHECKING ############################################################################## desc "Check syntax of all Ruby files." task :check_syntax do `find . -name "*.rb" |xargs -n1 ruby -c |grep -v "Syntax OK"` puts "* Done" end ############################################################################## # PACKAGING & INSTALLATION ############################################################################## # What files/dirs should 'rake clean' remove? CLEAN.include ["*.gem", "pkg", "rdoc", "coverage", "tools/*.png"] begin require 'rubygems/package_task' spec = Gem::Specification.new do |s| s.name = PKG_NAME s.version = PKG_VERSION s.authors = AUTHORS s.email = EMAIL s.homepage = HOMEPAGE s.rubyforge_project = PKG_NAME s.summary = SUMMARY s.description = s.summary s.platform = Gem::Platform::RUBY s.require_path = 'lib' s.executables = [] s.files = PKG_FILES s.test_files = [] s.has_rdoc = true s.extra_rdoc_files = RDOC_FILES s.rdoc_options = RDOC_OPTIONS s.required_ruby_version = ">= 1.8.4" end Gem::PackageTask.new(spec) do |pkg| pkg.gem_spec = spec pkg.need_tar = true pkg.need_zip = true end namespace :gem do desc "Run :package and install the .gem locally" task :install => [:update_gemspec, :package] do sh %{sudo gem install --local pkg/#{PKG_NAME}-#{PKG_VERSION}.gem} end desc "Like gem:install but without ri or rdocs" task :install_fast => [:update_gemspec, :package] do sh %{sudo gem install --local pkg/#{PKG_NAME}-#{PKG_VERSION}.gem --no-rdoc --no-ri} end desc "Run :clean and uninstall the .gem" task :uninstall => :clean do sh %{sudo gem uninstall #{PKG_NAME}} end # Thanks to the Merb project for this code. desc "Update Github Gemspec" task :update_gemspec do skip_fields = %w(new_platform original_platform date cache_dir cache_file loaded) result = "# WARNING : RAKE AUTO-GENERATED FILE. DO NOT MANUALLY EDIT!\n" result << "# RUN : 'rake gem:update_gemspec'\n\n" result << "Gem::Specification.new do |s|\n" spec.instance_variables.sort.each do |ivar| value = spec.instance_variable_get(ivar) name = ivar.to_s.split("@").last next if skip_fields.include?(name) || value.nil? || value == "" || (value.respond_to?(:empty?) && value.empty?) if name == "dependencies" value.each do |d| dep, *ver = d.to_s.split(" ") result << " s.add_dependency #{dep.inspect}, #{ver.join(" ").inspect.gsub(/[()]/, "")}\n" end else case value when Array value = name != "files" ? value.inspect : value.sort.uniq.inspect.split(",").join(",\n") when String, Fixnum, true, false value = value.inspect else value = value.to_s.inspect end result << " s.#{name} = #{value}\n" end end result << "end" File.open(File.join(File.dirname(__FILE__), "#{spec.name}.gemspec"), "w"){|f| f << result} end end # namespace :gem # also keep the gemspec up to date each time we package a tarball or gem task :package => ['gem:update_gemspec'] task :gem => ['gem:update_gemspec'] rescue LoadError puts <