tournament 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
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