Rakefile in rio-0.4.2 vs Rakefile in rio-0.5.1

- old
+ new

@@ -1,281 +1,52 @@ -#-- -# =============================================================================== -# Copyright (c) 2005,2006,2007,2008 Christopher Kleckner -# All rights reserved -# -# This file is part of the Rio library for ruby. -# -# Rio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# Rio is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Rio; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# =============================================================================== -# -# To create the documentation for Rio run the command -# ruby build_doc.rb -# from the distribution directory. -#++ +#!/usr/bin/env rake +require "bundler/gem_tasks" +require "rdoc/task" -begin - require 'rubygems' - require 'rake/gempackagetask' -rescue Exception -end +Rake::RDocTask.new do |rdoc| + # $:.unshift File.expand_path(File.dirname(__FILE__)) -require 'rake/clean' -require 'rake/packagetask' -require 'rake/rdoctask' -require 'rake/testtask' + # p File.dirname(__FILE__) + '/../' + # p $: + require 'rdoc/rdoc' + # require 'rdoc/generator/parts' + rdoc.main = 'README' + rdoc.rdoc_files.include("README", + "lib/rio.rb", + "lib/rio/doc/*.rb", + "lib/rio/if/*.rb", + "lib/rio/kernel.rb", + "lib/rio/constructor.rb") -# General actions ############################################################## - -$:.push 'lib' -require 'rio/version' -require 'rio/doc' -require 'rio' - -SVN_REPOSITORY_ROOT = 'svn+ssh://rio4ruby@rubyforge.org//var/svn/rio' -SVN_REPOSITORY_URL = [SVN_REPOSITORY_ROOT,'trunk/rio'].join('/') - -require 'doc/pkg_def' - -ZIP_DIR = "/loc/zip/ruby/rio" - - -# The default task is run if rake is given no explicit arguments. - -desc "Default Task" -task :default => :rdoc - - -# End user tasks ################################################################ - -desc "Prepares for installation" -task :prepare do - ruby "setup.rb config" - ruby "setup.rb setup" + rdoc.title = 'Rio' + # #p $:[0] + # rdoc.rdoc_dir = 'doc' + # rdoc.options = PKG::RDOC_OPTIONS + ['--format=parts'] + # rdoc.inline_source = false + #rdoc.show_hash = true + #rdoc.add_generator(RDoc::Generator::Riofish) + #PKG::FILES::DOC.to_a.each do |glb| + # #next if glb =~ /yaml.rb$/ + # rdoc.rdoc_files.include( glb ) + #end + #rdoc.template = 'doc/generators/template/html/rio.rb' end -desc "Installs the package #{PKG::NAME}" -task :install => [:prepare] do - ruby "setup.rb install" -end - -task :clean do - ruby "setup.rb clean" -end - -CLOBBER << "doc/rdoc" -desc "Builds the documentation" -task :doc => [:rio_rdoc] do - puts "\nGenerating online documentation..." -# ruby %{-I../lib ../bin/webgen -V 2 } -end - -rd = Rake::RDocTask.new do |rdoc| - rdoc.rdoc_dir = 'doc/rdoc' - rdoc.title = PKG::TITLE - rdoc.options = PKG::RDOC_OPTIONS - rdoc.main = 'RIO::Doc::SYNOPSIS' - PKG::FILES::DOC.to_a.each do |glb| - #next if glb =~ /yaml.rb$/ - rdoc.rdoc_files.include( glb ) - end - rdoc.template = 'doc/generators/template/html/rio.rb' -end - -desc "Build custom RDoc" -task :rio_rdoc do - require 'rio/doc/SYNOPSIS' - ruby "-Idoc/patched_rdoc -Ilib doc/bin/rdoc --show-hash --op doc/rdoc --title #{PKG::TITLE} --line-numbers --template doc/generators/template/html/rio.rb #{PKG::FILES::DOC} --main #{RIO::Doc::SYNOPSIS}" -end -CLOBBER << "test/log" << "test/qp" -task :test do |t| - sh "cd test;ruby -I../lib -I. runtests.rb" -end - -task :ziparc do |var| - require 'rio' - #$trace_states = true - rio(ZIP_DIR) < rio('pkg').files['*.tgz','*.tar.gz','*.zip','*.gem'] -end - -task :gen_changelog do - sh "svn log -r HEAD:1 -v > ChangeLog" -end - -task :gen_version do - puts "Generating VERSION file" - File.open( 'VERSION', 'w+' ) do |file| file.write( PKG::VERSION + "\n" ) end -end - - -task :gen_files => [:gen_changelog, :gen_version] -#task :gen_files => [:gen_version] -CLOBBER << "ChangeLog" << "VERSION" -task :no_old_pkg do -# unless Dir["pkg/#{PKG::FULLNAME}*"].empty? -# $stderr.puts("packages for version #{PKG::VERSION} exist!") -# $stderr.puts("Either delete them, or change the version number.") -# exit(-1) -# end -end - -task :package => [:no_old_pkg, :gen_files] -#PKG::OUT_FILES.each do |f| -# file f => [:package] -#end - -Rake::PackageTask.new( PKG::NAME, PKG::VERSION ) do |p| - p.need_tar_gz = true - p.need_zip = true - p.package_files = PKG::FILES::DIST -end - -Spec = Gem::Specification.new do |s| - s.name = PKG::NAME - s.version = PKG::VERSION - s.author = PKG::AUTHOR - s.email = PKG::EMAIL - s.homepage = PKG::HOMEPAGE - s.rubyforge_project = PKG::RUBYFORGE_PROJECT - - s.platform = Gem::Platform::RUBY - s.summary = PKG::SUMMARY - s.files = PKG::FILES::DIST.map { |rf| rf.to_s } - - s.require_path = 'lib' - s.autorequire = 'rio' - - s.has_rdoc = true - - s.rdoc_options << PKG::RDOC_OPTIONS -end - -Rake::GemPackageTask.new(Spec) do |p| end - -desc "Build the Gem spec file for the rio package" -task :gemspec => "pkg/rio.gemspec" -file "pkg/rio.gemspec" => ["pkg", "Rakefile"] do |t| - open(t.name, "w") do |f| f.puts Spec.to_yaml end -end - -desc "Make a new release (test,package,svn_version)" -task :release => [:test, :clobber, :rdoc , :package, :svn_version, :ziparc] do - - -end -desc "Save the current code as a new svn version" -task :svn_version do - require 'rio' - repos = rio(SVN_REPOSITORY_URL) - repo_root = rio(SVN_REPOSITORY_ROOT) - proju = rio(repo_root,'trunk',PKG::NAME) - relu = rio(repo_root,'tags',"release-#{PKG::VERSION}") - relo =`svn list #{relu.to_url}` - if relo.size > 0 - $stderr.puts "Release #{relu.to_url} exists!" - exit(-1) - end - msg = "Release #{PKG::VERSION} of #{PKG::NAME}" - cmd = sprintf('svn copy %s %s -m "%s"',proju.to_url, relu.to_url, msg) - sh cmd -end - -desc "Commit the current code to svn" -task :svn_commit do - require 'rio' - msg = rio(?-).print("Comment: ").chomp.gets - cmd = sprintf('svn commit -m "%s"', msg) - sh cmd -end - -#desc "Build the gem from the gemspec" -#task :buildgem => ['rio.gemspec'] do -# cmd = "gem build 'rio.gemspec'" -# sh cmd -#end - -GEM_FILENAME = "pkg/#{Spec.full_name}.gem" -desc "Install development gem" -task :installgem => [GEM_FILENAME] do - cmd = "gem install #{GEM_FILENAME}" - sh cmd -end - -desc "Upload documentation to homepage" -task :uploaddoc => [:rdoc] do - Dir.chdir('doc/rdoc') - puts - puts "rio4ruby@rubyforge.org:/var/www/gforge-projects/#{PKG::NAME}/" - sh "scp -r * rio4ruby@rubyforge.org:/var/www/gforge-projects/#{PKG::NAME}/" -end - - -# Misc tasks ################################################################### - - -def count_lines( filename ) - lines = 0 - codelines = 0 - open( filename ) do |f| - f.each do |line| - lines += 1 - next if line =~ /^\s*$/ - next if line =~ /^\s*#/ - codelines += 1 +namespace :development do + gemspec = eval(::File.open(Dir[File.join(::File.dirname(__FILE__), "{,*}.gemspec")].first).read) + gemname = "#{gemspec.name}-#{gemspec.version}.gem" + desc "Release #{gemname} to private gem server" + task :release_private, [:host,:remote_dir] => :build do |t,args| + args.with_defaults(:host => 'gems', :remote_dir => '/srv/www/gems') + puts "Releasing #{gemname} to gem server at '#{args[:host]}' using remote directory '#{args[:remote_dir]}'" + sh %{scp pkg/#{gemname} #{args[:host]}:#{args[:remote_dir]}/gems} do |ok, res| + if ok + sh %{ ssh #{args[:host]} 'bash -l -c "gem generate_index -d #{args[:remote_dir]}"' } do |ok, res| + puts "command failed with status '#{res.exitstatus}'" unless ok + end + else + puts "command failed with status '#{res.exitstatus}'" + end end end - [lines, codelines] end - -def show_line( msg, lines, loc ) - printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg -end - - -desc "Show statistics" -task :statistics do - total_lines = 0 - total_code = 0 - show_line( "File Name", "Lines", "LOC" ) - PKG::FILES::SRC.each do |fn| - lines, codelines = count_lines fn - show_line( fn, lines, codelines ) - total_lines += lines - total_code += codelines - end - show_line( "Total", total_lines, total_code ) -end - - -def run_testsite( arguments = '' ) - chdir 'test' do - ruby "-I../lib -I. #{arguments} runtests.rb" - end -# ruby %{-I../lib #{arguments} ../bin/webgen -V 3 } -end - - -CLOBBER << "test/qp" << "qp" -desc "Build the test site" -task :testsite do - run_testsite -end - - -CLOBBER << "test/coverage" -desc "Run the code coverage tool on the testsite" -task :coverage do - run_testsite '-rcoverage' -end