tournament 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Manifest.txt CHANGED
@@ -133,6 +133,7 @@ webgui/lib/pdf_helper.rb
133
133
  webgui/lib/prince.rb
134
134
  webgui/lib/saves_picks.rb
135
135
  webgui/lib/tasks/admin.rake
136
+ webgui/lib/tasks/possibility.rake
136
137
  webgui/public/404.html
137
138
  webgui/public/422.html
138
139
  webgui/public/500.html
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ PROJ.authors = 'Douglas A. Seifert'
20
20
  PROJ.email = 'doug+rubyforge@dseifert.net'
21
21
  PROJ.url = 'http://www.dseifert.net/code/tournament'
22
22
  PROJ.rubyforge.name = 'tournament'
23
- PROJ.version = '2.5.0'
23
+ PROJ.version = '2.5.1'
24
24
  PROJ.group_id = 5863
25
25
 
26
26
  PROJ.spec.opts << '--color'
data/tasks/ann.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id$
2
1
 
3
2
  begin
4
3
  require 'bones/smtp_tls'
@@ -43,7 +42,7 @@ namespace :ann do
43
42
  desc "Send an email announcement"
44
43
  task :email => ['ann:prereqs', PROJ.ann.file] do
45
44
  ann = PROJ.ann
46
- from = ann.email[:from] || PROJ.email
45
+ from = ann.email[:from] || Array(PROJ.authors).first || PROJ.email
47
46
  to = Array(ann.email[:to])
48
47
 
49
48
  ### build a mail header for RFC 822
data/tasks/bones.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id$
2
1
 
3
2
  if HAVE_BONES
4
3
 
data/tasks/gem.rake CHANGED
@@ -1,6 +1,94 @@
1
- # $Id$
2
1
 
3
- require 'rake/gempackagetask'
2
+ require 'find'
3
+ require 'rake/packagetask'
4
+ require 'rubygems/user_interaction'
5
+ require 'rubygems/builder'
6
+
7
+ module Bones
8
+ class GemPackageTask < Rake::PackageTask
9
+ # Ruby GEM spec containing the metadata for this package. The
10
+ # name, version and package_files are automatically determined
11
+ # from the GEM spec and don't need to be explicitly provided.
12
+ #
13
+ attr_accessor :gem_spec
14
+
15
+ # Tasks from the Bones gem directory
16
+ attr_reader :bones_files
17
+
18
+ # Create a GEM Package task library. Automatically define the gem
19
+ # if a block is given. If no block is supplied, then +define+
20
+ # needs to be called to define the task.
21
+ #
22
+ def initialize(gem_spec)
23
+ init(gem_spec)
24
+ yield self if block_given?
25
+ define if block_given?
26
+ end
27
+
28
+ # Initialization tasks without the "yield self" or define
29
+ # operations.
30
+ #
31
+ def init(gem)
32
+ super(gem.name, gem.version)
33
+ @gem_spec = gem
34
+ @package_files += gem_spec.files if gem_spec.files
35
+ @bones_files = []
36
+
37
+ local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
38
+ if !test(?e, local_setup)
39
+ Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
40
+ end
41
+ end
42
+
43
+ # Create the Rake tasks and actions specified by this
44
+ # GemPackageTask. (+define+ is automatically called if a block is
45
+ # given to +new+).
46
+ #
47
+ def define
48
+ super
49
+ task :prereqs
50
+ task :package => ['gem:prereqs', "#{package_dir_path}/#{gem_file}"]
51
+ file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files + bones_files do
52
+ when_writing("Creating GEM") {
53
+ chdir(package_dir_path) do
54
+ Gem::Builder.new(gem_spec).build
55
+ verbose(true) {
56
+ mv gem_file, "../#{gem_file}"
57
+ }
58
+ end
59
+ }
60
+ end
61
+
62
+ file package_dir_path => bones_files do
63
+ mkdir_p package_dir rescue nil
64
+
65
+ gem_spec.files = (gem_spec.files +
66
+ bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
67
+
68
+ bones_files.each do |fn|
69
+ base_fn = File.join('tasks', File.basename(fn))
70
+ f = File.join(package_dir_path, base_fn)
71
+ fdir = File.dirname(f)
72
+ mkdir_p(fdir) if !File.exist?(fdir)
73
+ if File.directory?(fn)
74
+ mkdir_p(f)
75
+ else
76
+ raise "file name conflict for '#{base_fn}' (conflicts with '#{fn}')" if test(?e, f)
77
+ safe_ln(fn, f)
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ def gem_file
84
+ if @gem_spec.platform == Gem::Platform::RUBY
85
+ "#{package_name}.gem"
86
+ else
87
+ "#{package_name}-#{@gem_spec.platform}.gem"
88
+ end
89
+ end
90
+ end # class GemPackageTask
91
+ end # module Bones
4
92
 
5
93
  namespace :gem do
6
94
 
@@ -19,6 +107,10 @@ namespace :gem do
19
107
  s.add_dependency(*dep)
20
108
  end
21
109
 
110
+ PROJ.gem.development_dependencies.each do |dep|
111
+ s.add_development_dependency(*dep)
112
+ end
113
+
22
114
  s.files = PROJ.gem.files
23
115
  s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
24
116
  s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
@@ -57,37 +149,21 @@ namespace :gem do
57
149
  end
58
150
  end # Gem::Specification.new
59
151
 
60
- # A prerequisites task that all other tasks depend upon
61
- task :prereqs
152
+ Bones::GemPackageTask.new(PROJ.gem._spec) do |pkg|
153
+ pkg.need_tar = PROJ.gem.need_tar
154
+ pkg.need_zip = PROJ.gem.need_zip
155
+ end
62
156
 
63
157
  desc 'Show information about the gem'
64
158
  task :debug => 'gem:prereqs' do
65
159
  puts PROJ.gem._spec.to_ruby
66
160
  end
67
161
 
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"
162
+ desc 'Write the gemspec '
163
+ task :spec => 'gem:prereqs' do
164
+ File.open("#{PROJ.name}.gemspec", 'w') do |f|
165
+ f.write PROJ.gem._spec.to_ruby
79
166
  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
167
  end
92
168
 
93
169
  desc 'Install the gem'
@@ -113,14 +189,13 @@ namespace :gem do
113
189
  task :cleanup do
114
190
  sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
115
191
  end
116
-
117
192
  end # namespace :gem
118
193
 
194
+
119
195
  desc 'Alias to gem:package'
120
196
  task :gem => 'gem:package'
121
197
 
122
198
  task :clobber => 'gem:clobber_package'
123
-
124
- remove_desc_for_task %w(gem:clobber_package)
199
+ remove_desc_for_task 'gem:clobber_package'
125
200
 
126
201
  # EOF
data/tasks/git.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id$
2
1
 
3
2
  if HAVE_GIT
4
3
 
data/tasks/notes.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id$
2
1
 
3
2
  if HAVE_BONES
4
3
 
data/tasks/post_load.rake CHANGED
@@ -1,16 +1,16 @@
1
- # $Id$
2
1
 
3
2
  # This file does not define any rake tasks. It is used to load some project
4
3
  # settings if they are not defined by the user.
5
4
 
6
- PROJ.rdoc.exclude << "^#{Regexp.escape(PROJ.manifest_file)}$"
7
5
  PROJ.exclude << ["^#{Regexp.escape(PROJ.ann.file)}$",
6
+ "^#{Regexp.escape(PROJ.ignore_file)}$",
8
7
  "^#{Regexp.escape(PROJ.rdoc.dir)}/",
9
8
  "^#{Regexp.escape(PROJ.rcov.dir)}/"]
10
9
 
11
10
  flatten_arrays = lambda do |this,os|
12
11
  os.instance_variable_get(:@table).each do |key,val|
13
- next if key == :dependencies
12
+ next if key == :dependencies \
13
+ or key == :development_dependencies
14
14
  case val
15
15
  when Array; val.flatten!
16
16
  when OpenStruct; this.call(this,val)
@@ -25,12 +25,7 @@ PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
25
25
 
26
26
  PROJ.summary ||= PROJ.description.split('.').first
27
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
28
+ PROJ.gem.files ||= manifest
34
29
 
35
30
  PROJ.gem.executables ||= PROJ.gem.files.find_all {|fn| fn =~ %r/^bin/}
36
31
 
data/tasks/rdoc.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id$
2
1
 
3
2
  require 'rake/rdoctask'
4
3
 
@@ -9,7 +8,6 @@ namespace :doc do
9
8
  rdoc = PROJ.rdoc
10
9
  rd.main = rdoc.main
11
10
  rd.rdoc_dir = rdoc.dir
12
- rd.template = rdoc.template
13
11
 
14
12
  incl = Regexp.new(rdoc.include.join('|'))
15
13
  excl = Regexp.new(rdoc.exclude.join('|'))
@@ -21,10 +19,11 @@ namespace :doc do
21
19
  end
22
20
  rd.rdoc_files.push(*files)
23
21
 
24
- title = "#{PROJ.name}-#{PROJ.version} Documentation"
25
-
22
+ name = PROJ.name
26
23
  rf_name = PROJ.rubyforge.name
27
- title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != title
24
+
25
+ title = "#{name}-#{PROJ.version} Documentation"
26
+ title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != name
28
27
 
29
28
  rd.options << "-t #{title}"
30
29
  rd.options.concat(rdoc.opts)
data/tasks/rubyforge.rake CHANGED
@@ -6,7 +6,7 @@ require 'rake/contrib/sshpublisher'
6
6
 
7
7
  namespace :gem do
8
8
  desc 'Package and upload to RubyForge'
9
- task :release => [:clobber, 'gem:package'] do |t|
9
+ task :release => [:clobber, 'gem'] do |t|
10
10
  v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
11
11
  abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
12
12
  pkg = "pkg/#{PROJ.gem._spec.full_name}"
@@ -26,9 +26,7 @@ namespace :gem do
26
26
  c['release_changes'] = PROJ.changes if PROJ.changes
27
27
  c['preformatted'] = true
28
28
 
29
- files = [(PROJ.gem.need_tar ? "#{pkg}.tgz" : nil),
30
- (PROJ.gem.need_zip ? "#{pkg}.zip" : nil),
31
- "#{pkg}.gem"].compact
29
+ files = Dir.glob("#{pkg}*.*")
32
30
 
33
31
  puts "Releasing #{PROJ.name} v. #{PROJ.version}"
34
32
  rf.add_release PROJ.rubyforge.name, PROJ.name, PROJ.version, *files
data/tasks/setup.rb CHANGED
@@ -1,12 +1,15 @@
1
- # $Id$
2
1
 
3
2
  require 'rubygems'
4
3
  require 'rake'
5
4
  require 'rake/clean'
6
5
  require 'fileutils'
7
6
  require 'ostruct'
7
+ require 'find'
8
8
 
9
- class OpenStruct; undef :gem; end
9
+ class OpenStruct; undef :gem if defined? :gem; end
10
+
11
+ # TODO: make my own openstruct type object that includes descriptions
12
+ # TODO: use the descriptions to output help on the available bones options
10
13
 
11
14
  PROJ = OpenStruct.new(
12
15
  # Project Defaults
@@ -25,8 +28,8 @@ PROJ = OpenStruct.new(
25
28
  :ruby_opts => %w(-w),
26
29
  :libs => [],
27
30
  :history_file => 'History.txt',
28
- :manifest_file => 'Manifest.txt',
29
31
  :readme_file => 'README.txt',
32
+ :ignore_file => '.bnsignore',
30
33
 
31
34
  # Announce
32
35
  :ann => OpenStruct.new(
@@ -48,6 +51,7 @@ PROJ = OpenStruct.new(
48
51
  # Gem Packaging
49
52
  :gem => OpenStruct.new(
50
53
  :dependencies => [],
54
+ :development_dependencies => [],
51
55
  :executables => nil,
52
56
  :extensions => FileList['ext/**/extconf.rb'],
53
57
  :files => nil,
@@ -59,7 +63,7 @@ PROJ = OpenStruct.new(
59
63
  # File Annotations
60
64
  :notes => OpenStruct.new(
61
65
  :exclude => %w(^tasks/setup\.rb$),
62
- :extensions => %w(.txt .rb .erb) << '',
66
+ :extensions => %w(.txt .rb .erb .rdoc) << '',
63
67
  :tags => %w(FIXME OPTIMIZE TODO)
64
68
  ),
65
69
 
@@ -74,7 +78,7 @@ PROJ = OpenStruct.new(
74
78
  # Rdoc
75
79
  :rdoc => OpenStruct.new(
76
80
  :opts => [],
77
- :include => %w(^lib/ ^bin/ ^ext/ \.txt$),
81
+ :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
78
82
  :exclude => %w(extconf\.rb$),
79
83
  :main => nil,
80
84
  :dir => 'doc',
@@ -110,17 +114,17 @@ PROJ = OpenStruct.new(
110
114
  )
111
115
 
112
116
  # 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!
117
+ tasks_dir = File.expand_path(File.dirname(__FILE__))
118
+ post_load_fn = File.join(tasks_dir, 'post_load.rake')
119
+ rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
120
+ rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
115
121
  import(*rakefiles)
116
122
 
117
123
  # Setup the project libraries
118
124
  %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
119
125
 
120
126
  # 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'
127
+ DEV_NULL = File.exist?('/dev/null') ? '/dev/null' : 'NUL:'
124
128
 
125
129
  def quiet( &block )
126
130
  io = [STDOUT.dup, STDERR.dup]
@@ -133,21 +137,15 @@ ensure
133
137
  $stdout, $stderr = STDOUT, STDERR
134
138
  end
135
139
 
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
140
+ DIFF = if system("gdiff '#{__FILE__}' '#{__FILE__}' > #{DEV_NULL} 2>&1") then 'gdiff'
141
+ else 'diff' end unless defined? DIFF
141
142
 
142
- SUDO = if WIN32 then ''
143
- else
144
- if quiet {system 'which sudo'} then 'sudo'
145
- else '' end
146
- end
143
+ SUDO = if system("which sudo > #{DEV_NULL} 2>&1") then 'sudo'
144
+ else '' end unless defined? SUDO
147
145
 
148
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
149
- RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
150
- GEM = WIN32 ? 'gem.bat' : 'gem'
146
+ RCOV = "#{RUBY} -S rcov"
147
+ RDOC = "#{RUBY} -S rdoc"
148
+ GEM = "#{RUBY} -S gem"
151
149
 
152
150
  %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
153
151
  begin
@@ -162,6 +160,12 @@ HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
162
160
  HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
163
161
  system("git --version 2>&1 > #{DEV_NULL}"))
164
162
 
163
+ # Add bones as a development dependency
164
+ #
165
+ if HAVE_BONES
166
+ PROJ.gem.development_dependencies << ['bones', ">= #{Bones::VERSION}"]
167
+ end
168
+
165
169
  # Reads a file at +path+ and spits out an array of the +paragraphs+
166
170
  # specified.
167
171
  #
@@ -243,9 +247,29 @@ end
243
247
  # Scans the current working directory and creates a list of files that are
244
248
  # candidates to be in the manifest.
245
249
  #
246
- def manifest_files
250
+ def manifest
247
251
  files = []
248
- exclude = Regexp.new(PROJ.exclude.join('|'))
252
+ exclude = PROJ.exclude.dup
253
+ comment = %r/^\s*#/
254
+
255
+ # process the ignore file and add the items there to the exclude list
256
+ if test(?f, PROJ.ignore_file)
257
+ ary = []
258
+ File.readlines(PROJ.ignore_file).each do |line|
259
+ next if line =~ comment
260
+ line.chomp!
261
+ line.strip!
262
+ next if line.nil? or line.empty?
263
+
264
+ glob = line =~ %r/\*\./ ? File.join('**', line) : line
265
+ Dir.glob(glob).each {|fn| ary << "^#{Regexp.escape(fn)}"}
266
+ end
267
+ exclude.concat ary
268
+ end
269
+
270
+ # generate a regular expression from the exclude list
271
+ exclude = Regexp.new(exclude.join('|'))
272
+
249
273
  Find.find '.' do |path|
250
274
  path.sub! %r/^(\.\/|\/)/o, ''
251
275
  next unless test ?f, path