phorsfall-resourceful_pagination 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
1
  == 0.0.1 / 2008-07-30
2
2
 
3
3
  * Initial release.
4
+
5
+ == 0.0.2 / 2008-08-05
6
+
7
+ * Fixed that Rails would try to load the Gem's Rake tasks when unpacked in the vendor directory.
@@ -1,3 +1,4 @@
1
+ .gitignore
1
2
  History.txt
2
3
  Manifest.txt
3
4
  README.txt
@@ -5,19 +6,20 @@ Rakefile
5
6
  init.rb
6
7
  lib/resourceful_pagination.rb
7
8
  lib/resourceful_pagination/core_ext.rb
9
+ rake_tasks/ann.rake
10
+ rake_tasks/bones.rake
11
+ rake_tasks/gem.rake
12
+ rake_tasks/git.rake
13
+ rake_tasks/manifest.rake
14
+ rake_tasks/notes.rake
15
+ rake_tasks/post_load.rake
16
+ rake_tasks/rdoc.rake
17
+ rake_tasks/rubyforge.rake
18
+ rake_tasks/setup.rb
19
+ rake_tasks/spec.rake
20
+ rake_tasks/svn.rake
21
+ rake_tasks/test.rake
22
+ resourceful_pagination.gemspec
8
23
  spec/resourceful_pagination_spec.rb
9
24
  spec/spec_helper.rb
10
- tasks/ann.rake
11
- tasks/bones.rake
12
- tasks/gem.rake
13
- tasks/git.rake
14
- tasks/manifest.rake
15
- tasks/notes.rake
16
- tasks/post_load.rake
17
- tasks/rdoc.rake
18
- tasks/rubyforge.rake
19
- tasks/setup.rb
20
- tasks/spec.rake
21
- tasks/svn.rake
22
- tasks/test.rake
23
25
  test/test_resourceful_pagination.rb
data/Rakefile CHANGED
@@ -2,7 +2,7 @@
2
2
  # configured in this Rakefile. The .rake files in the tasks directory
3
3
  # are where the options are used.
4
4
 
5
- load 'tasks/setup.rb'
5
+ load 'rake_tasks/setup.rb'
6
6
 
7
7
  ensure_in_path 'lib'
8
8
  require 'resourceful_pagination'
@@ -7,7 +7,7 @@ unless defined? ResourcefulPagination
7
7
  module ResourcefulPagination
8
8
 
9
9
  # :stopdoc:
10
- VERSION = '0.0.1'
10
+ VERSION = '0.0.2'
11
11
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
12
12
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
13
13
  # :startdoc:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phorsfall-resourceful_pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Horsfall
@@ -1,81 +0,0 @@
1
- # $Id$
2
-
3
- begin
4
- require 'bones/smtp_tls'
5
- rescue LoadError
6
- require 'net/smtp'
7
- end
8
- require 'time'
9
-
10
- namespace :ann do
11
-
12
- # A prerequisites task that all other tasks depend upon
13
- task :prereqs
14
-
15
- file PROJ.ann.file do
16
- ann = PROJ.ann
17
- puts "Generating #{ann.file}"
18
- File.open(ann.file,'w') do |fd|
19
- fd.puts("#{PROJ.name} version #{PROJ.version}")
20
- fd.puts(" by #{Array(PROJ.authors).first}") if PROJ.authors
21
- fd.puts(" #{PROJ.url}") if PROJ.url.valid?
22
- fd.puts(" (the \"#{PROJ.release_name}\" release)") if PROJ.release_name
23
- fd.puts
24
- fd.puts("== DESCRIPTION")
25
- fd.puts
26
- fd.puts(PROJ.description)
27
- fd.puts
28
- fd.puts(PROJ.changes.sub(%r/^.*$/, '== CHANGES'))
29
- fd.puts
30
- ann.paragraphs.each do |p|
31
- fd.puts "== #{p.upcase}"
32
- fd.puts
33
- fd.puts paragraphs_of(PROJ.readme_file, p).join("\n\n")
34
- fd.puts
35
- end
36
- fd.puts ann.text if ann.text
37
- end
38
- end
39
-
40
- desc "Create an announcement file"
41
- task :announcement => ['ann:prereqs', PROJ.ann.file]
42
-
43
- desc "Send an email announcement"
44
- task :email => ['ann:prereqs', PROJ.ann.file] do
45
- ann = PROJ.ann
46
- from = ann.email[:from] || PROJ.email
47
- to = Array(ann.email[:to])
48
-
49
- ### build a mail header for RFC 822
50
- rfc822msg = "From: #{from}\n"
51
- rfc822msg << "To: #{to.join(',')}\n"
52
- rfc822msg << "Subject: [ANN] #{PROJ.name} #{PROJ.version}"
53
- rfc822msg << " (#{PROJ.release_name})" if PROJ.release_name
54
- rfc822msg << "\n"
55
- rfc822msg << "Date: #{Time.new.rfc822}\n"
56
- rfc822msg << "Message-Id: "
57
- rfc822msg << "<#{"%.8f" % Time.now.to_f}@#{ann.email[:domain]}>\n\n"
58
- rfc822msg << File.read(ann.file)
59
-
60
- params = [:server, :port, :domain, :acct, :passwd, :authtype].map do |key|
61
- ann.email[key]
62
- end
63
-
64
- params[3] = PROJ.email if params[3].nil?
65
-
66
- if params[4].nil?
67
- STDOUT.write "Please enter your e-mail password (#{params[3]}): "
68
- params[4] = STDIN.gets.chomp
69
- end
70
-
71
- ### send email
72
- Net::SMTP.start(*params) {|smtp| smtp.sendmail(rfc822msg, from, to)}
73
- end
74
- end # namespace :ann
75
-
76
- desc 'Alias to ann:announcement'
77
- task :ann => 'ann:announcement'
78
-
79
- CLOBBER << PROJ.ann.file
80
-
81
- # EOF
@@ -1,21 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_BONES
4
-
5
- namespace :bones do
6
-
7
- desc 'Show the PROJ open struct'
8
- task :debug do |t|
9
- atr = if t.application.top_level_tasks.length == 2
10
- t.application.top_level_tasks.pop
11
- end
12
-
13
- if atr then Bones::Debug.show_attr(PROJ, atr)
14
- else Bones::Debug.show PROJ end
15
- end
16
-
17
- end # namespace :bones
18
-
19
- end # HAVE_BONES
20
-
21
- # EOF
@@ -1,126 +0,0 @@
1
- # $Id$
2
-
3
- require 'rake/gempackagetask'
4
-
5
- namespace :gem do
6
-
7
- PROJ.gem._spec = Gem::Specification.new do |s|
8
- s.name = PROJ.name
9
- s.version = PROJ.version
10
- s.summary = PROJ.summary
11
- s.authors = Array(PROJ.authors)
12
- s.email = PROJ.email
13
- s.homepage = Array(PROJ.url).first
14
- s.rubyforge_project = PROJ.rubyforge.name
15
-
16
- s.description = PROJ.description
17
-
18
- PROJ.gem.dependencies.each do |dep|
19
- s.add_dependency(*dep)
20
- end
21
-
22
- s.files = PROJ.gem.files
23
- s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
24
- s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
25
-
26
- s.bindir = 'bin'
27
- dirs = Dir["{#{PROJ.libs.join(',')}}"]
28
- s.require_paths = dirs unless dirs.empty?
29
-
30
- incl = Regexp.new(PROJ.rdoc.include.join('|'))
31
- excl = PROJ.rdoc.exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
32
- excl = Regexp.new(excl.join('|'))
33
- rdoc_files = PROJ.gem.files.find_all do |fn|
34
- case fn
35
- when excl; false
36
- when incl; true
37
- else false end
38
- end
39
- s.rdoc_options = PROJ.rdoc.opts + ['--main', PROJ.rdoc.main]
40
- s.extra_rdoc_files = rdoc_files
41
- s.has_rdoc = true
42
-
43
- if test ?f, PROJ.test.file
44
- s.test_file = PROJ.test.file
45
- else
46
- s.test_files = PROJ.test.files.to_a
47
- end
48
-
49
- # Do any extra stuff the user wants
50
- PROJ.gem.extras.each do |msg, val|
51
- case val
52
- when Proc
53
- val.call(s.send(msg))
54
- else
55
- s.send "#{msg}=", val
56
- end
57
- end
58
- end # Gem::Specification.new
59
-
60
- # A prerequisites task that all other tasks depend upon
61
- task :prereqs
62
-
63
- desc 'Show information about the gem'
64
- task :debug => 'gem:prereqs' do
65
- puts PROJ.gem._spec.to_ruby
66
- end
67
-
68
- pkg = Rake::PackageTask.new(PROJ.name, PROJ.version) do |pkg|
69
- pkg.need_tar = PROJ.gem.need_tar
70
- pkg.need_zip = PROJ.gem.need_zip
71
- pkg.package_files += PROJ.gem._spec.files
72
- end
73
- Rake::Task['gem:package'].instance_variable_set(:@full_comment, nil)
74
-
75
- gem_file = if PROJ.gem._spec.platform == Gem::Platform::RUBY
76
- "#{pkg.package_name}.gem"
77
- else
78
- "#{pkg.package_name}-#{PROJ.gem._spec.platform}.gem"
79
- end
80
-
81
- desc "Build the gem file #{gem_file}"
82
- task :package => ['gem:prereqs', "#{pkg.package_dir}/#{gem_file}"]
83
-
84
- file "#{pkg.package_dir}/#{gem_file}" => [pkg.package_dir] + PROJ.gem._spec.files do
85
- when_writing("Creating GEM") {
86
- Gem::Builder.new(PROJ.gem._spec).build
87
- verbose(true) {
88
- mv gem_file, "#{pkg.package_dir}/#{gem_file}"
89
- }
90
- }
91
- end
92
-
93
- desc 'Install the gem'
94
- task :install => [:clobber, 'gem:package'] do
95
- sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
96
-
97
- # use this version of the command for rubygems > 1.0.0
98
- #sh "#{SUDO} #{GEM} install --no-update-sources pkg/#{PROJ.gem._spec.full_name}"
99
- end
100
-
101
- desc 'Uninstall the gem'
102
- task :uninstall do
103
- installed_list = Gem.source_index.find_name(PROJ.name)
104
- if installed_list and installed_list.collect { |s| s.version.to_s}.include?(PROJ.version) then
105
- sh "#{SUDO} #{GEM} uninstall --version '#{PROJ.version}' --ignore-dependencies --executables #{PROJ.name}"
106
- end
107
- end
108
-
109
- desc 'Reinstall the gem'
110
- task :reinstall => [:uninstall, :install]
111
-
112
- desc 'Cleanup the gem'
113
- task :cleanup do
114
- sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
115
- end
116
-
117
- end # namespace :gem
118
-
119
- desc 'Alias to gem:package'
120
- task :gem => 'gem:package'
121
-
122
- task :clobber => 'gem:clobber_package'
123
-
124
- remove_desc_for_task %w(gem:clobber_package)
125
-
126
- # EOF
@@ -1,41 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_GIT
4
-
5
- namespace :git do
6
-
7
- # A prerequisites task that all other tasks depend upon
8
- task :prereqs
9
-
10
- desc 'Show tags from the Git repository'
11
- task :show_tags => 'git:prereqs' do |t|
12
- puts %x/git tag/
13
- end
14
-
15
- desc 'Create a new tag in the Git repository'
16
- task :create_tag => 'git:prereqs' do |t|
17
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
18
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
19
-
20
- tag = "%s-%s" % [PROJ.name, PROJ.version]
21
- msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
22
-
23
- puts "Creating Git tag '#{tag}'"
24
- unless system "git tag -a -m '#{msg}' #{tag}"
25
- abort "Tag creation failed"
26
- end
27
-
28
- if %x/git remote/ =~ %r/^origin\s*$/
29
- unless system "git push origin #{tag}"
30
- abort "Could not push tag to remote Git repository"
31
- end
32
- end
33
- end
34
-
35
- end # namespace :git
36
-
37
- task 'gem:release' => 'git:create_tag'
38
-
39
- end # if HAVE_GIT
40
-
41
- # EOF
@@ -1,49 +0,0 @@
1
- # $Id$
2
-
3
- require 'find'
4
-
5
- namespace :manifest do
6
-
7
- desc 'Verify the manifest'
8
- task :check do
9
- fn = PROJ.manifest_file + '.tmp'
10
- files = manifest_files
11
-
12
- File.open(fn, 'w') {|fp| fp.puts files}
13
- lines = %x(#{DIFF} -du #{PROJ.manifest_file} #{fn}).split("\n")
14
- if HAVE_FACETS_ANSICODE and ENV.has_key?('TERM')
15
- lines.map! do |line|
16
- case line
17
- when %r/^(-{3}|\+{3})/; nil
18
- when %r/^@/; Console::ANSICode.blue line
19
- when %r/^\+/; Console::ANSICode.green line
20
- when %r/^\-/; Console::ANSICode.red line
21
- else line end
22
- end
23
- end
24
- puts lines.compact
25
- rm fn rescue nil
26
- end
27
-
28
- desc 'Create a new manifest'
29
- task :create do
30
- files = manifest_files
31
- unless test(?f, PROJ.manifest_file)
32
- files << PROJ.manifest_file
33
- files.sort!
34
- end
35
- File.open(PROJ.manifest_file, 'w') {|fp| fp.puts files}
36
- end
37
-
38
- task :assert do
39
- files = manifest_files
40
- manifest = File.read(PROJ.manifest_file).split($/)
41
- raise "ERROR: #{PROJ.manifest_file} is out of date" unless files == manifest
42
- end
43
-
44
- end # namespace :manifest
45
-
46
- desc 'Alias to manifest:check'
47
- task :manifest => 'manifest:check'
48
-
49
- # EOF
@@ -1,28 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_BONES
4
-
5
- desc "Enumerate all annotations"
6
- task :notes do |t|
7
- id = if t.application.top_level_tasks.length > 1
8
- t.application.top_level_tasks.slice!(1..-1).join(' ')
9
- end
10
- Bones::AnnotationExtractor.enumerate(
11
- PROJ, PROJ.notes.tags.join('|'), id, :tag => true)
12
- end
13
-
14
- namespace :notes do
15
- PROJ.notes.tags.each do |tag|
16
- desc "Enumerate all #{tag} annotations"
17
- task tag.downcase.to_sym do |t|
18
- id = if t.application.top_level_tasks.length > 1
19
- t.application.top_level_tasks.slice!(1..-1).join(' ')
20
- end
21
- Bones::AnnotationExtractor.enumerate(PROJ, tag, id)
22
- end
23
- end
24
- end
25
-
26
- end # if HAVE_BONES
27
-
28
- # EOF
@@ -1,39 +0,0 @@
1
- # $Id$
2
-
3
- # This file does not define any rake tasks. It is used to load some project
4
- # settings if they are not defined by the user.
5
-
6
- PROJ.rdoc.exclude << "^#{Regexp.escape(PROJ.manifest_file)}$"
7
- PROJ.exclude << ["^#{Regexp.escape(PROJ.ann.file)}$",
8
- "^#{Regexp.escape(PROJ.rdoc.dir)}/",
9
- "^#{Regexp.escape(PROJ.rcov.dir)}/"]
10
-
11
- flatten_arrays = lambda do |this,os|
12
- os.instance_variable_get(:@table).each do |key,val|
13
- next if key == :dependencies
14
- case val
15
- when Array; val.flatten!
16
- when OpenStruct; this.call(this,val)
17
- end
18
- end
19
- end
20
- flatten_arrays.call(flatten_arrays,PROJ)
21
-
22
- PROJ.changes ||= paragraphs_of(PROJ.history_file, 0..1).join("\n\n")
23
-
24
- PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
25
-
26
- PROJ.summary ||= PROJ.description.split('.').first
27
-
28
- PROJ.gem.files ||=
29
- if test(?f, PROJ.manifest_file)
30
- files = File.readlines(PROJ.manifest_file).map {|fn| fn.chomp.strip}
31
- files.delete ''
32
- files
33
- else [] end
34
-
35
- PROJ.gem.executables ||= PROJ.gem.files.find_all {|fn| fn =~ %r/^bin/}
36
-
37
- PROJ.rdoc.main ||= PROJ.readme_file
38
-
39
- # EOF
@@ -1,51 +0,0 @@
1
- # $Id$
2
-
3
- require 'rake/rdoctask'
4
-
5
- namespace :doc do
6
-
7
- desc 'Generate RDoc documentation'
8
- Rake::RDocTask.new do |rd|
9
- rdoc = PROJ.rdoc
10
- rd.main = rdoc.main
11
- rd.rdoc_dir = rdoc.dir
12
-
13
- incl = Regexp.new(rdoc.include.join('|'))
14
- excl = Regexp.new(rdoc.exclude.join('|'))
15
- files = PROJ.gem.files.find_all do |fn|
16
- case fn
17
- when excl; false
18
- when incl; true
19
- else false end
20
- end
21
- rd.rdoc_files.push(*files)
22
-
23
- title = "#{PROJ.name}-#{PROJ.version} Documentation"
24
-
25
- rf_name = PROJ.rubyforge.name
26
- title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != title
27
-
28
- rd.options << "-t #{title}"
29
- rd.options.concat(rdoc.opts)
30
- end
31
-
32
- desc 'Generate ri locally for testing'
33
- task :ri => :clobber_ri do
34
- sh "#{RDOC} --ri -o ri ."
35
- end
36
-
37
- task :clobber_ri do
38
- rm_r 'ri' rescue nil
39
- end
40
-
41
- end # namespace :doc
42
-
43
- desc 'Alias to doc:rdoc'
44
- task :doc => 'doc:rdoc'
45
-
46
- desc 'Remove all build products'
47
- task :clobber => %w(doc:clobber_rdoc doc:clobber_ri)
48
-
49
- remove_desc_for_task %w(doc:clobber_rdoc)
50
-
51
- # EOF
@@ -1,57 +0,0 @@
1
-
2
- if PROJ.rubyforge.name.valid? && HAVE_RUBYFORGE
3
-
4
- require 'rubyforge'
5
- require 'rake/contrib/sshpublisher'
6
-
7
- namespace :gem do
8
- desc 'Package and upload to RubyForge'
9
- task :release => [:clobber, 'gem:package'] do |t|
10
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
11
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
12
- pkg = "pkg/#{PROJ.gem._spec.full_name}"
13
-
14
- if $DEBUG then
15
- puts "release_id = rf.add_release #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
16
- puts "rf.add_file #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
17
- end
18
-
19
- rf = RubyForge.new
20
- rf.configure rescue nil
21
- puts 'Logging in'
22
- rf.login
23
-
24
- c = rf.userconfig
25
- c['release_notes'] = PROJ.description if PROJ.description
26
- c['release_changes'] = PROJ.changes if PROJ.changes
27
- c['preformatted'] = true
28
-
29
- files = [(PROJ.gem.need_tar ? "#{pkg}.tgz" : nil),
30
- (PROJ.gem.need_zip ? "#{pkg}.zip" : nil),
31
- "#{pkg}.gem"].compact
32
-
33
- puts "Releasing #{PROJ.name} v. #{PROJ.version}"
34
- rf.add_release PROJ.rubyforge.name, PROJ.name, PROJ.version, *files
35
- end
36
- end # namespace :gem
37
-
38
-
39
- namespace :doc do
40
- desc "Publish RDoc to RubyForge"
41
- task :release => %w(doc:clobber_rdoc doc:rdoc) do
42
- config = YAML.load(
43
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
44
- )
45
-
46
- host = "#{config['username']}@rubyforge.org"
47
- remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge.name}/"
48
- remote_dir << PROJ.rdoc.remote_dir if PROJ.rdoc.remote_dir
49
- local_dir = PROJ.rdoc.dir
50
-
51
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
52
- end
53
- end # namespace :doc
54
-
55
- end # if HAVE_RUBYFORGE
56
-
57
- # EOF
@@ -1,268 +0,0 @@
1
- # $Id$
2
-
3
- require 'rubygems'
4
- require 'rake'
5
- require 'rake/clean'
6
- require 'fileutils'
7
- require 'ostruct'
8
-
9
- class OpenStruct; undef :gem; end
10
-
11
- PROJ = OpenStruct.new(
12
- # Project Defaults
13
- :name => nil,
14
- :summary => nil,
15
- :description => nil,
16
- :changes => nil,
17
- :authors => nil,
18
- :email => nil,
19
- :url => "\000",
20
- :version => ENV['VERSION'] || '0.0.0',
21
- :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
22
- :release_name => ENV['RELEASE'],
23
-
24
- # System Defaults
25
- :ruby_opts => %w(-w),
26
- :libs => [],
27
- :history_file => 'History.txt',
28
- :manifest_file => 'Manifest.txt',
29
- :readme_file => 'README.txt',
30
-
31
- # Announce
32
- :ann => OpenStruct.new(
33
- :file => 'announcement.txt',
34
- :text => nil,
35
- :paragraphs => [],
36
- :email => {
37
- :from => nil,
38
- :to => %w(ruby-talk@ruby-lang.org),
39
- :server => 'localhost',
40
- :port => 25,
41
- :domain => ENV['HOSTNAME'],
42
- :acct => nil,
43
- :passwd => nil,
44
- :authtype => :plain
45
- }
46
- ),
47
-
48
- # Gem Packaging
49
- :gem => OpenStruct.new(
50
- :dependencies => [],
51
- :executables => nil,
52
- :extensions => FileList['ext/**/extconf.rb'],
53
- :files => nil,
54
- :need_tar => true,
55
- :need_zip => false,
56
- :extras => {}
57
- ),
58
-
59
- # File Annotations
60
- :notes => OpenStruct.new(
61
- :exclude => %w(^tasks/setup\.rb$),
62
- :extensions => %w(.txt .rb .erb) << '',
63
- :tags => %w(FIXME OPTIMIZE TODO)
64
- ),
65
-
66
- # Rcov
67
- :rcov => OpenStruct.new(
68
- :dir => 'coverage',
69
- :opts => %w[--sort coverage -T],
70
- :threshold => 90.0,
71
- :threshold_exact => false
72
- ),
73
-
74
- # Rdoc
75
- :rdoc => OpenStruct.new(
76
- :opts => [],
77
- :include => %w(^lib/ ^bin/ ^ext/ \.txt$),
78
- :exclude => %w(extconf\.rb$),
79
- :main => nil,
80
- :dir => 'doc',
81
- :remote_dir => nil
82
- ),
83
-
84
- # Rubyforge
85
- :rubyforge => OpenStruct.new(
86
- :name => "\000"
87
- ),
88
-
89
- # Rspec
90
- :spec => OpenStruct.new(
91
- :files => FileList['spec/**/*_spec.rb'],
92
- :opts => []
93
- ),
94
-
95
- # Subversion Repository
96
- :svn => OpenStruct.new(
97
- :root => nil,
98
- :path => '',
99
- :trunk => 'trunk',
100
- :tags => 'tags',
101
- :branches => 'branches'
102
- ),
103
-
104
- # Test::Unit
105
- :test => OpenStruct.new(
106
- :files => FileList['test/**/test_*.rb'],
107
- :file => 'test/all.rb',
108
- :opts => []
109
- )
110
- )
111
-
112
- # Load the other rake files in the tasks folder
113
- rakefiles = Dir.glob('tasks/*.rake').sort
114
- rakefiles.unshift(rakefiles.delete('tasks/post_load.rake')).compact!
115
- import(*rakefiles)
116
-
117
- # Setup the project libraries
118
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
119
-
120
- # Setup some constants
121
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
122
-
123
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
124
-
125
- def quiet( &block )
126
- io = [STDOUT.dup, STDERR.dup]
127
- STDOUT.reopen DEV_NULL
128
- STDERR.reopen DEV_NULL
129
- block.call
130
- ensure
131
- STDOUT.reopen io.first
132
- STDERR.reopen io.last
133
- $stdout, $stderr = STDOUT, STDERR
134
- end
135
-
136
- DIFF = if WIN32 then 'diff.exe'
137
- else
138
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
139
- else 'diff' end
140
- end unless defined? DIFF
141
-
142
- SUDO = if WIN32 then ''
143
- else
144
- if quiet {system 'which sudo'} then 'sudo'
145
- else '' end
146
- end
147
-
148
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
149
- RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
150
- GEM = WIN32 ? 'gem.bat' : 'gem'
151
-
152
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
153
- begin
154
- require lib
155
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
156
- rescue LoadError
157
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
158
- end
159
- end
160
- HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
161
- system("svn --version 2>&1 > #{DEV_NULL}"))
162
- HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
163
- system("git --version 2>&1 > #{DEV_NULL}"))
164
-
165
- # Reads a file at +path+ and spits out an array of the +paragraphs+
166
- # specified.
167
- #
168
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
169
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
170
- #
171
- def paragraphs_of( path, *paragraphs )
172
- title = String === paragraphs.first ? paragraphs.shift : nil
173
- ary = File.read(path).delete("\r").split(/\n\n+/)
174
-
175
- result = if title
176
- tmp, matching = [], false
177
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
178
- paragraphs << (0..-1) if paragraphs.empty?
179
-
180
- ary.each do |val|
181
- if val =~ rgxp
182
- break if matching
183
- matching = true
184
- rgxp = %r/^=+/i
185
- elsif matching
186
- tmp << val
187
- end
188
- end
189
- tmp
190
- else ary end
191
-
192
- result.values_at(*paragraphs)
193
- end
194
-
195
- # Adds the given gem _name_ to the current project's dependency list. An
196
- # optional gem _version_ can be given. If omitted, the newest gem version
197
- # will be used.
198
- #
199
- def depend_on( name, version = nil )
200
- spec = Gem.source_index.find_name(name).last
201
- version = spec.version.to_s if version.nil? and !spec.nil?
202
-
203
- PROJ.gem.dependencies << case version
204
- when nil; [name]
205
- when %r/^\d/; [name, ">= #{version}"]
206
- else [name, version] end
207
- end
208
-
209
- # Adds the given arguments to the include path if they are not already there
210
- #
211
- def ensure_in_path( *args )
212
- args.each do |path|
213
- path = File.expand_path(path)
214
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
215
- end
216
- end
217
-
218
- # Find a rake task using the task name and remove any description text. This
219
- # will prevent the task from being displayed in the list of available tasks.
220
- #
221
- def remove_desc_for_task( names )
222
- Array(names).each do |task_name|
223
- task = Rake.application.tasks.find {|t| t.name == task_name}
224
- next if task.nil?
225
- task.instance_variable_set :@comment, nil
226
- end
227
- end
228
-
229
- # Change working directories to _dir_, call the _block_ of code, and then
230
- # change back to the original working directory (the current directory when
231
- # this method was called).
232
- #
233
- def in_directory( dir, &block )
234
- curdir = pwd
235
- begin
236
- cd dir
237
- return block.call
238
- ensure
239
- cd curdir
240
- end
241
- end
242
-
243
- # Scans the current working directory and creates a list of files that are
244
- # candidates to be in the manifest.
245
- #
246
- def manifest_files
247
- files = []
248
- exclude = Regexp.new(PROJ.exclude.join('|'))
249
- Find.find '.' do |path|
250
- path.sub! %r/^(\.\/|\/)/o, ''
251
- next unless test ?f, path
252
- next if path =~ exclude
253
- files << path
254
- end
255
- files.sort!
256
- end
257
-
258
- # We need a "valid" method thtat determines if a string is suitable for use
259
- # in the gem specification.
260
- #
261
- class Object
262
- def valid?
263
- return !(self.empty? or self == "\000") if self.respond_to?(:to_str)
264
- return false
265
- end
266
- end
267
-
268
- # EOF
@@ -1,55 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_SPEC_RAKE_SPECTASK
4
- require 'spec/rake/verify_rcov'
5
-
6
- namespace :spec do
7
-
8
- desc 'Run all specs with basic output'
9
- Spec::Rake::SpecTask.new(:run) do |t|
10
- t.ruby_opts = PROJ.ruby_opts
11
- t.spec_opts = PROJ.spec.opts
12
- t.spec_files = PROJ.spec.files
13
- t.libs += PROJ.libs
14
- end
15
-
16
- desc 'Run all specs with text output'
17
- Spec::Rake::SpecTask.new(:specdoc) do |t|
18
- t.ruby_opts = PROJ.ruby_opts
19
- t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
20
- t.spec_files = PROJ.spec.files
21
- t.libs += PROJ.libs
22
- end
23
-
24
- if HAVE_RCOV
25
- desc 'Run all specs with RCov'
26
- Spec::Rake::SpecTask.new(:rcov) do |t|
27
- t.ruby_opts = PROJ.ruby_opts
28
- t.spec_opts = PROJ.spec.opts
29
- t.spec_files = PROJ.spec.files
30
- t.libs += PROJ.libs
31
- t.rcov = true
32
- t.rcov_dir = PROJ.rcov.dir
33
- t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
34
- end
35
-
36
- RCov::VerifyTask.new(:verify) do |t|
37
- t.threshold = PROJ.rcov.threshold
38
- t.index_html = File.join(PROJ.rcov.dir, 'index.html')
39
- t.require_exact_threshold = PROJ.rcov.threshold_exact
40
- end
41
-
42
- task :verify => :rcov
43
- remove_desc_for_task %w(spec:clobber_rcov)
44
- end
45
-
46
- end # namespace :spec
47
-
48
- desc 'Alias to spec:run'
49
- task :spec => 'spec:run'
50
-
51
- task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
52
-
53
- end # if HAVE_SPEC_RAKE_SPECTASK
54
-
55
- # EOF
@@ -1,48 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_SVN
4
-
5
- unless PROJ.svn.root
6
- info = %x/svn info ./
7
- m = %r/^Repository Root:\s+(.*)$/.match(info)
8
- PROJ.svn.root = (m.nil? ? '' : m[1])
9
- end
10
- PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
11
-
12
- namespace :svn do
13
-
14
- # A prerequisites task that all other tasks depend upon
15
- task :prereqs
16
-
17
- desc 'Show tags from the SVN repository'
18
- task :show_tags => 'svn:prereqs' do |t|
19
- tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
20
- tags.gsub!(%r/\/$/, '')
21
- tags = tags.split("\n").sort {|a,b| b <=> a}
22
- puts tags
23
- end
24
-
25
- desc 'Create a new tag in the SVN repository'
26
- task :create_tag => 'svn:prereqs' do |t|
27
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
28
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
29
-
30
- svn = PROJ.svn
31
- trunk = File.join(svn.root, svn.trunk)
32
- tag = "%s-%s" % [PROJ.name, PROJ.version]
33
- tag = File.join(svn.root, svn.tags, tag)
34
- msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
35
-
36
- puts "Creating SVN tag '#{tag}'"
37
- unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
38
- abort "Tag creation failed"
39
- end
40
- end
41
-
42
- end # namespace :svn
43
-
44
- task 'gem:release' => 'svn:create_tag'
45
-
46
- end # if PROJ.svn.path
47
-
48
- # EOF
@@ -1,38 +0,0 @@
1
- # $Id$
2
-
3
- require 'rake/testtask'
4
-
5
- namespace :test do
6
-
7
- Rake::TestTask.new(:run) do |t|
8
- t.libs = PROJ.libs
9
- t.test_files = if test(?f, PROJ.test.file) then [PROJ.test.file]
10
- else PROJ.test.files end
11
- t.ruby_opts += PROJ.ruby_opts
12
- t.ruby_opts += PROJ.test.opts
13
- end
14
-
15
- if HAVE_RCOV
16
- desc 'Run rcov on the unit tests'
17
- task :rcov => :clobber_rcov do
18
- opts = PROJ.rcov.opts.dup << '-o' << PROJ.rcov.dir
19
- opts = opts.join(' ')
20
- files = if test(?f, PROJ.test.file) then [PROJ.test.file]
21
- else PROJ.test.files end
22
- files = files.join(' ')
23
- sh "#{RCOV} #{files} #{opts}"
24
- end
25
-
26
- task :clobber_rcov do
27
- rm_r 'coverage' rescue nil
28
- end
29
- end
30
-
31
- end # namespace :test
32
-
33
- desc 'Alias to test:run'
34
- task :test => 'test:run'
35
-
36
- task :clobber => 'test:clobber_rcov' if HAVE_RCOV
37
-
38
- # EOF