rubygems-update 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (128) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +24 -0
  3. data/.document +4 -3
  4. data/ChangeLog +382 -1
  5. data/Manifest.txt +214 -0
  6. data/README +1 -49
  7. data/Rakefile +124 -191
  8. data/bin/gem +1 -4
  9. data/cruise_config.rb +22 -0
  10. data/doc/release_notes/rel_1_3_1.rdoc +3 -3
  11. data/doc/release_notes/rel_1_3_2.rdoc +119 -0
  12. data/lib/gauntlet_rubygems.rb +50 -0
  13. data/lib/rubygems.rb +250 -25
  14. data/lib/rubygems/builder.rb +62 -60
  15. data/lib/rubygems/command.rb +421 -319
  16. data/lib/rubygems/command_manager.rb +153 -125
  17. data/lib/rubygems/commands/check_command.rb +12 -7
  18. data/lib/rubygems/commands/cleanup_command.rb +11 -2
  19. data/lib/rubygems/commands/contents_command.rb +42 -18
  20. data/lib/rubygems/commands/generate_index_command.rb +91 -15
  21. data/lib/rubygems/commands/install_command.rb +33 -47
  22. data/lib/rubygems/commands/query_command.rb +36 -20
  23. data/lib/rubygems/commands/rdoc_command.rb +62 -68
  24. data/lib/rubygems/commands/search_command.rb +26 -32
  25. data/lib/rubygems/commands/setup_command.rb +353 -0
  26. data/lib/rubygems/commands/sources_command.rb +5 -0
  27. data/lib/rubygems/commands/specification_command.rb +23 -3
  28. data/lib/rubygems/commands/uninstall_command.rb +71 -61
  29. data/lib/rubygems/commands/unpack_command.rb +14 -12
  30. data/lib/rubygems/commands/update_command.rb +26 -5
  31. data/lib/rubygems/defaults.rb +16 -3
  32. data/lib/rubygems/dependency.rb +38 -7
  33. data/lib/rubygems/dependency_installer.rb +7 -4
  34. data/lib/rubygems/digest/digest_adapter.rb +42 -33
  35. data/lib/rubygems/digest/sha1.rb +6 -1
  36. data/lib/rubygems/digest/sha2.rb +5 -0
  37. data/lib/rubygems/doc_manager.rb +31 -11
  38. data/lib/rubygems/ext/ext_conf_builder.rb +2 -1
  39. data/lib/rubygems/ext/rake_builder.rb +6 -2
  40. data/lib/rubygems/format.rb +63 -63
  41. data/lib/rubygems/gem_openssl.rb +14 -2
  42. data/lib/rubygems/gem_path_searcher.rb +7 -3
  43. data/lib/rubygems/gem_runner.rb +59 -39
  44. data/lib/rubygems/indexer.rb +450 -109
  45. data/lib/rubygems/install_update_options.rb +13 -1
  46. data/lib/rubygems/installer.rb +25 -22
  47. data/lib/rubygems/local_remote_options.rb +5 -3
  48. data/lib/rubygems/old_format.rb +124 -120
  49. data/lib/rubygems/package/tar_header.rb +25 -3
  50. data/lib/rubygems/package/tar_input.rb +5 -5
  51. data/lib/rubygems/package/tar_output.rb +2 -0
  52. data/lib/rubygems/package/tar_reader.rb +19 -0
  53. data/lib/rubygems/package/tar_reader/entry.rb +43 -0
  54. data/lib/rubygems/package/tar_writer.rb +65 -3
  55. data/lib/rubygems/package_task.rb +117 -0
  56. data/lib/rubygems/platform.rb +12 -8
  57. data/lib/rubygems/remote_fetcher.rb +43 -24
  58. data/lib/rubygems/require_paths_builder.rb +14 -12
  59. data/lib/rubygems/requirement.rb +15 -6
  60. data/lib/rubygems/rubygems_version.rb +14 -1
  61. data/lib/rubygems/source_index.rb +38 -16
  62. data/lib/rubygems/source_info_cache_entry.rb +2 -2
  63. data/lib/rubygems/spec_fetcher.rb +43 -20
  64. data/lib/rubygems/specification.rb +1122 -947
  65. data/lib/rubygems/text.rb +30 -0
  66. data/lib/rubygems/timer.rb +14 -11
  67. data/lib/rubygems/uninstaller.rb +25 -5
  68. data/lib/rubygems/user_interaction.rb +294 -264
  69. data/lib/rubygems/validator.rb +70 -36
  70. data/lib/rubygems/version.rb +97 -33
  71. data/lib/rubygems/version_option.rb +1 -0
  72. data/setup.rb +11 -306
  73. data/test/foo/discover.rb +0 -0
  74. data/test/gem_installer_test_case.rb +22 -11
  75. data/test/gem_package_tar_test_case.rb +0 -14
  76. data/test/gemutilities.rb +89 -8
  77. data/test/mockgemui.rb +2 -1
  78. data/test/rubygems_plugin.rb +16 -0
  79. data/test/test_gem.rb +107 -36
  80. data/test/test_gem_command.rb +3 -13
  81. data/test/test_gem_command_manager.rb +1 -14
  82. data/test/test_gem_commands_cert_command.rb +1 -1
  83. data/test/test_gem_commands_contents_command.rb +63 -0
  84. data/test/test_gem_commands_environment_command.rb +1 -1
  85. data/test/test_gem_commands_generate_index_command.rb +104 -1
  86. data/test/test_gem_commands_install_command.rb +95 -0
  87. data/test/test_gem_commands_pristine_command.rb +3 -3
  88. data/test/test_gem_commands_query_command.rb +46 -0
  89. data/test/test_gem_commands_sources_command.rb +9 -5
  90. data/test/test_gem_commands_specification_command.rb +31 -0
  91. data/test/test_gem_commands_uninstall_command.rb +3 -2
  92. data/test/test_gem_commands_unpack_command.rb +3 -2
  93. data/test/test_gem_commands_update_command.rb +12 -7
  94. data/test/test_gem_dependency.rb +62 -11
  95. data/test/test_gem_dependency_installer.rb +18 -5
  96. data/test/test_gem_dependency_list.rb +6 -6
  97. data/test/test_gem_doc_manager.rb +7 -1
  98. data/test/test_gem_ext_configure_builder.rb +8 -10
  99. data/test/test_gem_ext_ext_conf_builder.rb +14 -8
  100. data/test/test_gem_gem_path_searcher.rb +1 -1
  101. data/test/test_gem_gem_runner.rb +11 -0
  102. data/test/test_gem_indexer.rb +398 -21
  103. data/test/test_gem_install_update_options.rb +20 -6
  104. data/test/test_gem_installer.rb +22 -14
  105. data/test/test_gem_local_remote_options.rb +2 -1
  106. data/test/test_gem_package_tar_header.rb +3 -3
  107. data/test/test_gem_package_tar_input.rb +3 -3
  108. data/test/test_gem_package_tar_output.rb +2 -2
  109. data/test/test_gem_package_task.rb +70 -0
  110. data/test/test_gem_platform.rb +12 -6
  111. data/test/test_gem_remote_fetcher.rb +23 -1
  112. data/test/test_gem_source_index.rb +32 -21
  113. data/test/test_gem_spec_fetcher.rb +77 -5
  114. data/test/test_gem_specification.rb +274 -1
  115. data/test/test_gem_uninstaller.rb +34 -4
  116. data/test/test_gem_version.rb +94 -4
  117. data/test/test_gem_version_option.rb +13 -0
  118. data/test/test_kernel.rb +4 -4
  119. data/util/CL2notes +56 -0
  120. data/util/gem_prelude.rb.template +251 -0
  121. metadata +30 -20
  122. metadata.gz.sig +3 -4
  123. data/TODO +0 -1
  124. data/scripts/buildtests.rb +0 -31
  125. data/scripts/gemdoc.rb +0 -67
  126. data/scripts/runtest.rb +0 -40
  127. data/scripts/specdoc.rb +0 -171
  128. data/scripts/upload_gemdoc.rb +0 -140
data/README CHANGED
@@ -14,55 +14,7 @@ For more details and other options, see:
14
14
 
15
15
  * {User Guide/Installation}[http://docs.rubygems.org/read/chapter/3]
16
16
 
17
- == For User Documentation, see
18
-
19
- * {RubyGems User Guide}[http://docs.rubygems.org/read/book/1]
20
- * {Frequently Asked Questions}[http://docs.rubygems.org/read/book/3]
21
-
22
- == For developer docs see
23
-
24
- * {Creating Gems}[http://docs.rubygems.org/read/chapter/5]
25
- * {GEM Specification}[http://docs.rubygems.org/read/chapter/20]
26
-
27
- == The home page of the RubyGems Documentation
28
-
29
- * {RubyGems Home}[http://rubygems.rubyforge.org]
30
-
31
- == Additional directories
32
-
33
- [./bin/...] binary commands (gem, gem_server, etc)
34
- [./lib/...] the RubyGems library
35
- [./pkgs/...] default RubyGems packages (currently only 'sources')
36
- [./test/...] unit and functional tests
37
-
38
- == Credits
39
-
40
- RubyGems was originally developed at RubyConf 2003 by:
41
-
42
- * Rich Kilmer -- rich(at)infoether.com
43
- * Chad Fowler -- chad(at)chadfowler.com
44
- * David Black -- dblack(at)wobblini.net
45
- * Paul Brannan -- paul(at)atdesk.com
46
- * Jim Weirch -- {jim(at)weirichhouse.org}[mailto:jim@weirichhouse.org]
47
-
48
- == Contributors since then
49
-
50
- * Gavin Sinclair -- gsinclair(at)soyabean.com.au
51
- * George Marrows-- george.marrows(at)ntlworld.com
52
- * Dick Davies -- rasputnik(at)hellooperator.net
53
- * Mauricio Fernandez -- batsman.geo(at)yahoo.com
54
- * Simon Strandgaard -- neoneye(at)adslhome.dk
55
- * Dave Glasser -- glasser(at)mit.edu
56
- * Paul Duncan -- pabs(at)pablotron.org
57
- * Ville Aine -- vaine(at)cs.helsinki.fi
58
- * Ryan Davis --
59
- * Eric Hodel -- drbrain(at)segment7.net
60
-
61
- (If your name is missing, PLEASE let us know!)
62
-
63
- == Feedback
64
-
65
- Please provide us feedback at http://rubyforge.org/projects/rubygems
17
+ Further documentation can be found on the Gem module. (<tt>ri Gem</tt>)
66
18
 
67
19
  Thanks!
68
20
 
data/Rakefile CHANGED
@@ -11,63 +11,57 @@ $:.unshift 'lib'
11
11
  require 'rubygems'
12
12
  require 'rake/clean'
13
13
  require 'rake/testtask'
14
- require 'rake/packagetask'
15
- require 'rake/gempackagetask'
16
- require 'rake/rdoctask'
17
-
18
- def announce(msg='')
19
- $stderr.puts msg
20
- end
14
+ require 'rubygems/package_task'
21
15
 
22
16
  def generate_rubygems_version(path, version)
23
17
  open path, 'w' do |f|
24
18
  f.puts <<-EOF
19
+ #--
25
20
  # DO NOT EDIT
26
21
  # This file is auto-generated by build scripts.
27
22
  # See: rake update_version
23
+ #++
24
+
28
25
  module Gem
26
+
27
+ ##
28
+ # The version of RubyGems you are using
29
+
29
30
  RubyGemsVersion = '#{version}'
31
+
32
+ ##
33
+ # The version of RubyGems you are using (duplicated for familiarity)
34
+
35
+ VERSION = RubyGemsVersion
36
+
30
37
  end
31
38
  EOF
32
39
  end
33
40
  end
34
41
 
35
- if RUBY_PLATFORM.match('mswin')
36
- ENV['CERT_DIR'] ||= (File.join(ENV['USERPROFILE'], '.gem'))
37
- else
38
- ENV['CERT_DIR'] ||= File.expand_path(File.join('~', '.gem'))
39
- end
42
+ ENV['CERT_DIR'] ||= File.join(Gem.user_home, '.gem')
40
43
 
41
44
  PKG_NAME = 'rubygems'
42
- def package_version
43
- `ruby -Ilib bin/gem environment packageversion`.chomp
44
- end
45
45
 
46
- if ENV['REL']
46
+ if ENV['REL'] then
47
47
  PKG_VERSION = ENV['REL']
48
- CURRENT_VERSION = package_version
48
+ CURRENT_VERSION = Gem::RubyGemsVersion
49
49
  else
50
- PKG_VERSION = package_version
50
+ PKG_VERSION = Gem::RubyGemsVersion
51
51
  CURRENT_VERSION = PKG_VERSION
52
52
  end
53
53
 
54
- CLEAN.include("COMMENTS")
55
54
  CLOBBER.include(
56
- 'InstalledFiles',
57
- "test/data/one/one-*0.0.1.gem",
58
- "test/temp",
59
- 'test/mock/gem/doc',
60
- 'test/mock/gem/cache',
61
- 'test/data/gemhome',
62
- 'test/data/[a-z]*.gem',
63
- 'scripts/*.hieraki',
55
+ '**/debug.log',
56
+ '*.out',
57
+ '.config',
64
58
  'data__',
65
59
  'html',
66
- 'pkgs/sources/sources*.gem',
67
- '.config',
68
- '**/debug.log',
69
60
  'logs',
70
- '*.out'
61
+ 'pkgs/sources/sources*.gem',
62
+ 'scripts/*.hieraki',
63
+ 'test/data/[a-z]*.gem',
64
+ 'test/data/gemhome'
71
65
  )
72
66
  CLOBBER.exclude('test/data/broken-1.0.0.gem')
73
67
 
@@ -81,6 +75,7 @@ desc "Run just the unit tests"
81
75
  Rake::TestTask.new(:test_units) do |t|
82
76
  t.test_files = FileList['test/test*.rb']
83
77
  t.warning = true
78
+ t.libs = %w[lib test]
84
79
  end
85
80
 
86
81
  desc "Run just the functional tests"
@@ -95,33 +90,11 @@ Rake::TestTask.new(:test_all) do |t|
95
90
  t.warning = true
96
91
  end
97
92
 
98
- desc "Run the tests for a build"
99
- task :build_tests do
100
- html_dir = ENV['TESTRESULTS'] || 'html/tests'
101
- ruby %{-Ilib scripts/buildtests.rb #{html_dir}}
102
- open("#{html_dir}/summary.html") do |inf|
103
- open("#{html_dir}/summary.new", "w") do |outf|
104
- inf.each do |line|
105
- if line =~ /td align/
106
- line = " <td align=\"left\">#{Time.now}</td><td align=\"right\">"
107
- end
108
- outf.puts line
109
- end
110
- end
111
- end
112
- mv "#{html_dir}/summary.html", "#{html_dir}/summary.old"
113
- mv "#{html_dir}/summary.new", "#{html_dir}/summary.html"
114
- end
115
-
116
93
  # Shortcuts for test targets
117
94
  task :tf => [:test_functional]
118
95
  task :tu => [:test_units]
119
96
  task :ta => [:test_all]
120
97
 
121
- task :gemtest do
122
- ruby %{-Ilib -rscripts/runtest -e 'run_tests("test/test_gempaths.rb", true)'}
123
- end
124
-
125
98
  # --------------------------------------------------------------------
126
99
  # Creating a release
127
100
 
@@ -129,27 +102,24 @@ desc "Make a new release"
129
102
  task :release => [
130
103
  :prerelease,
131
104
  :clobber,
132
- :test_all,
105
+ :test_functional,
106
+ :test_units,
133
107
  :update_version,
134
108
  :package,
135
109
  :tag] do
136
110
 
137
- announce
138
- announce "**************************************************************"
139
- announce "* Release #{PKG_VERSION} Complete."
140
- announce "* Packages ready to upload."
141
- announce "**************************************************************"
142
- announce
111
+ warn "**************************************************************"
112
+ warn "* Release #{PKG_VERSION} Complete."
113
+ warn "* Packages ready to upload."
114
+ warn "**************************************************************"
143
115
  end
144
116
 
145
117
  desc "Validate that everything is ready to go for a release."
146
118
  task :prerelease do
147
- announce
148
- announce "**************************************************************"
149
- announce "* Making RubyGem Release #{PKG_VERSION}"
150
- announce "* (current version #{CURRENT_VERSION})"
151
- announce "**************************************************************"
152
- announce
119
+ warn "**************************************************************"
120
+ warn "* Making RubyGem Release #{PKG_VERSION}"
121
+ warn "* (current version #{CURRENT_VERSION})"
122
+ warn "**************************************************************"
153
123
 
154
124
  # Is a release number supplied?
155
125
  raise "Usage: rake release REL=x.y.z [REUSE=tag_suffix]" unless ENV['REL']
@@ -161,28 +131,28 @@ task :prerelease do
161
131
  end
162
132
 
163
133
  # Are all source files checked in?
164
- if ENV['RELTEST']
165
- announce "Release Task Testing, skipping checked-in file test"
134
+ if ENV['RELTEST'] then
135
+ warn "Release Task Testing, skipping checked-in file test"
166
136
  else
167
- announce "Checking for unchecked-in files..."
137
+ warn "Checking for unchecked-in files..."
168
138
  data = `svn st`
169
139
  unless data =~ /^$/
170
140
  abort "svn status is not clean ... do you have unchecked-in files?"
171
141
  end
172
- announce "No outstanding checkins found ... OK"
142
+ warn "No outstanding checkins found ... OK"
173
143
  end
174
144
  end
175
145
 
176
146
  task :update_version => [:prerelease] do
177
- if PKG_VERSION == CURRENT_VERSION
178
- announce "No version change ... skipping version update"
147
+ if PKG_VERSION == CURRENT_VERSION then
148
+ warn "No version change ... skipping version update"
179
149
  else
180
- announce "Updating RubyGem version to #{PKG_VERSION}"
150
+ warn "Updating RubyGem version to #{PKG_VERSION}"
181
151
 
182
152
  generate_rubygems_version 'lib/rubygems/rubygems_version.rb', PKG_VERSION
183
153
 
184
- if ENV['RELTEST']
185
- announce "Release Task Testing, skipping commiting of new version"
154
+ if ENV['RELTEST'] then
155
+ warn "Release Task Testing, skipping commiting of new version"
186
156
  else
187
157
  sh %{svn commit -m "Updated to version #{PKG_VERSION}" lib/rubygems/rubygems_version.rb} # "
188
158
  end
@@ -192,17 +162,15 @@ end
192
162
  task :tag => [:prerelease] do
193
163
  reltag = "REL_#{PKG_VERSION.gsub(/\./, '_')}"
194
164
  reltag = "REL_#{ENV['REUSE'].gsub(/\./, '_')}" if ENV['REUSE']
195
- announce "Tagging SVN with [#{reltag}]"
165
+ warn "Tagging SVN with [#{reltag}]"
196
166
  software_dir = File.basename(Dir.pwd)
197
- if ENV['RELTEST']
198
- announce "Release Task Testing, skipping SVN tagging (in dir #{software_dir})"
167
+ if ENV['RELTEST'] then
168
+ warn "Release Task Testing, skipping SVN tagging (in dir #{software_dir})"
199
169
  else
200
170
  sh %{svn copy svn+ssh://rubyforge.org/var/svn/rubygems/trunk svn+ssh://rubyforge.org/var/svn/rubygems/tags/#{reltag}}
201
171
  end
202
172
  end
203
173
 
204
- # --------------------------------------------------------------------
205
-
206
174
  begin # rcov
207
175
  require 'rcov/rcovtask'
208
176
 
@@ -217,26 +185,24 @@ begin # rcov
217
185
  rescue LoadError
218
186
  end
219
187
 
220
- # --------------------------------------------------------------------
221
- # Create a task to build the RDOC documentation tree.
222
-
223
- desc "Create the RDOC html files"
224
- Rake::RDocTask.new("rdoc") { |rdoc|
225
- rdoc.rdoc_dir = 'html'
226
- rdoc.title = "RubyGems"
227
- rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README'
228
- rdoc.rdoc_files.include('README', 'TODO', 'LICENSE.txt', 'GPL.txt')
229
- rdoc.rdoc_files.include('lib/**/*.rb')
230
- rdoc.rdoc_files.include('doc/**/*.rdoc')
231
- }
232
-
233
- desc "Publish the RDOCs on RubyForge"
234
- task :publish_rdoc => ["html/index.html"] do
235
- # NOTE: This task assumes that you have an SSH alias setup for rubyforge.
236
- mkdir_p "emptydir"
237
- sh "scp -rq emptydir rubyforge:/var/www/gforge-projects/rubygems/rdoc"
238
- sh "scp -rq html/* rubyforge:/var/www/gforge-projects/rubygems/rdoc"
239
- rm_r "emptydir"
188
+ begin # rdoc
189
+ gem 'rdoc'
190
+ require 'rdoc/task'
191
+
192
+ desc "Create the RDoc html files"
193
+ RDoc::Task.new :rdoc do |rdoc|
194
+ rdoc.rdoc_dir = 'html'
195
+ rdoc.title = "RubyGems #{CURRENT_VERSION}"
196
+ rdoc.options << '--line-numbers' << '--main' << 'README'
197
+ rdoc.rdoc_files.include 'README', 'LICENSE.txt', 'GPL.txt', 'lib', 'doc'
198
+ end
199
+
200
+ desc "Publish RDoc on RubyForge"
201
+ task :publish_rdoc => ["html/index.html"] do
202
+ sh "rsync -avP --delete html/ rubyforge.org:/var/www/gforge-projects/rubygems/rdoc"
203
+ end
204
+ rescue Gem::LoadError
205
+ warn "install RDoc 2.4.2+"
240
206
  end
241
207
 
242
208
  # Wiki Doc Targets
@@ -266,68 +232,49 @@ end
266
232
 
267
233
  # Package tasks
268
234
 
269
- PKG_FILES = FileList[
270
- ".document",
271
- "ChangeLog",
272
- "GPL.txt",
273
- "LICENSE.txt",
274
- "README",
275
- "Rakefile",
276
- "TODO",
277
- "bin/*",
278
- "doc/release_notes/*",
279
- "lib/**/*.rb",
280
- "pkgs/**/*",
281
- "scripts/*.rb",
282
- "setup.rb",
283
- "test/**/*"
284
- ]
285
-
286
- PKG_FILES.exclude %r(^test/temp(/|$))
287
- PKG_FILES.exclude %r(\*\.rbc$)
288
-
289
- task :package_files do
290
- puts PKG_FILES.join("\n")
291
- end
235
+ PKG_FILES = File.read('Manifest.txt').split "\n"
292
236
 
293
- Rake::PackageTask.new("package") do |p|
294
- p.name = PKG_NAME
295
- p.version = PKG_VERSION
296
- p.need_tar = true
297
- p.need_zip = true
237
+ Rake::PackageTask.new :package do |p|
238
+ p.name = PKG_NAME
239
+ p.version = PKG_VERSION
240
+ p.need_tar = true
241
+ p.need_zip = true
298
242
  p.package_files = PKG_FILES
299
243
  end
300
244
 
301
245
  warn_unsigned = true
302
246
 
303
247
  Spec = Gem::Specification.new do |s|
304
- s.name = PKG_NAME + "-update"
305
- s.version = PKG_VERSION
248
+ s.name = PKG_NAME + "-update"
249
+ s.version = PKG_VERSION
306
250
  s.required_ruby_version = Gem::Requirement.new '> 1.8.3'
307
- s.summary = "RubyGems Update GEM"
308
- s.description = %{RubyGems is a package management framework for Ruby. This Gem
309
- is a update for the base RubyGems software. You must have a base
251
+ s.summary = "RubyGems update gem"
252
+ s.description = <<-DESCRIPTION
253
+ RubyGems is a package management framework for Ruby.
254
+
255
+ This gem is an update for the RubyGems software. You must have an
310
256
  installation of RubyGems before this update can be applied.
311
- }
312
- s.files = PKG_FILES.to_a
313
- s.require_path = 'lib'
314
- s.authors = ['Jim Weirich', 'Chad Fowler', 'Eric Hodel']
315
- s.email = "rubygems-developers@rubyforge.org"
316
- s.homepage = "http://rubygems.rubyforge.org"
317
- s.rubyforge_project = "rubygems"
318
- s.bindir = "bin" # Use these for applications.
319
- s.executables = ["update_rubygems"]
320
- certdir = ENV['CERT_DIR']
257
+ DESCRIPTION
258
+ s.files = PKG_FILES
259
+ s.require_path = 'lib'
260
+ s.authors = ['Jim Weirich', 'Chad Fowler', 'Eric Hodel']
261
+ s.email = "rubygems-developers@rubyforge.org"
262
+ s.homepage = "http://rubygems.rubyforge.org"
263
+ s.rubyforge_project = "rubygems"
264
+ s.bindir = "bin"
265
+ s.executables = ["update_rubygems"]
266
+
267
+ certdir = ENV['CERT_DIR']
268
+
321
269
  if certdir then
322
270
  key = File.join certdir, 'gem-private_key.pem'
323
271
  cert = File.join certdir, 'gem-public_cert.pem'
324
272
 
325
- if File.exist? key and File.exist? cert then
273
+ warn_unsigned = ! (File.exist? key and File.exist? cert)
274
+
275
+ unless warn_unsigned then
326
276
  s.signing_key = File.join(certdir, 'gem-private_key.pem')
327
277
  s.cert_chain = [File.join(certdir, 'gem-public_cert.pem')]
328
- warn_unsigned = false
329
- else
330
- warn_unsigned = true
331
278
  end
332
279
  end
333
280
  end
@@ -341,12 +288,14 @@ file "pkg/#{Spec.full_name}.gem" do
341
288
  end
342
289
  end
343
290
 
344
- Rake::GemPackageTask.new(Spec) do |p| end
291
+ Gem::PackageTask.new Spec do |p| end
345
292
 
346
293
  desc "Build the Gem spec file for the rubygems-update package"
347
294
  task :gemspec => "pkg/rubygems-update.gemspec"
348
295
  file "pkg/rubygems-update.gemspec" => ["pkg", "Rakefile"] do |t|
349
- open(t.name, "w") do |f| f.puts Spec.to_yaml end
296
+ open t.name, 'w' do |f|
297
+ f.puts Spec.to_yaml
298
+ end
350
299
  end
351
300
 
352
301
  desc "Install RubyGems"
@@ -354,7 +303,7 @@ task :install do
354
303
  opts = ENV['SETUP_OPTIONS']
355
304
  ruby "setup.rb #{opts}".strip
356
305
 
357
- svnversion = `svnversion`.split(':').last.sub(/[^\d]/, '').strip
306
+ svnversion = `svnversion`.split(':').last.sub(/[^\d]+/, '').strip
358
307
 
359
308
  unless svnversion.empty? then
360
309
  File.read('lib/rubygems/rubygems_version.rb') =~ /RubyGemsVersion = '(.*)'/
@@ -367,45 +316,29 @@ task :install do
367
316
  end
368
317
  end
369
318
 
370
- desc "Run local 'gem' e.g. rake rungem -- install -i ~/tmp/gems"
371
- task :rungem do
372
- ARGV.shift
373
- exec(Gem.ruby, '-Ilib', 'bin/gem', *ARGV)
374
- end
375
-
376
319
  # Misc Tasks ---------------------------------------------------------
377
320
 
378
- def egrep(pattern)
379
- Dir['{bin,lib,test,util}/**/*.rb'].each do |fn|
380
- count = 0
381
- open(fn) do |f|
382
- while line = f.gets
383
- count += 1
384
- if line =~ pattern
385
- puts "#{fn}:#{count}:#{line}"
386
- end
387
- end
388
- end
389
- end
390
- end
321
+ desc "build util/gem_prelude.rb from the template and defaults.rb"
322
+ file 'util/gem_prelude.rb' =>
323
+ %w[util/gem_prelude.rb.template lib/rubygems/defaults.rb] do
324
+ gem_prelude = File.read 'util/gem_prelude.rb.template'
325
+ defaults = File.read 'lib/rubygems/defaults.rb'
391
326
 
392
- desc "Look for TODO and FIXME tags in the code"
393
- task :todo do
394
- egrep /#.*(FIXME|TODO|TBD)/
395
- end
327
+ raise 'template error' unless defaults.sub!(/^module Gem\n/, '')
328
+ raise 'template error' unless defaults.sub!(/^end\n/, '')
396
329
 
397
- desc "Look for Debugging print lines"
398
- task :dbg do
399
- egrep /\bDBG|\bbreakpoint\b/
400
- end
330
+ defaults.gsub!(/^/, ' ')
401
331
 
402
- desc "List all ruby files"
403
- task :rubyfiles do
404
- puts Dir['**/*.rb'].reject { |fn| fn =~ /^pkg/ }
405
- puts Dir['bin/*'].reject { |fn| fn =~ /CVS|(~$)|(\.rb$)/ }
406
- end
332
+ raise 'template error' unless
333
+ gem_prelude.sub!(/^# WARN\n/,
334
+ "# THIS FILE WAS AUTOGENERATED, DO NOT EDIT\n")
335
+ raise 'template error' unless
336
+ gem_prelude.sub!(/^ # INCLUDE rubygems\/defaults\n/, defaults)
407
337
 
408
- task :rf => :rubyfiles
338
+ open 'util/gem_prelude.rb', 'w' do |io|
339
+ io.write gem_prelude
340
+ end
341
+ end
409
342
 
410
343
  # These tasks expect to have the following directory structure:
411
344
  #
@@ -423,7 +356,7 @@ rubinius_dir = ENV['RUBINIUS_PATH'] || '../../../git/git.rubini.us/code'
423
356
  ruby_dir = ENV['RUBY_PATH'] || '../../ruby/trunk'
424
357
 
425
358
  desc "Updates Ruby HEAD with the currently checked-out copy of RubyGems."
426
- task :update_ruby do
359
+ task :update_ruby => 'util/gem_prelude.rb' do
427
360
  sh "rsync #{rsync_options} bin/gem #{ruby_dir}/bin/gem"
428
361
  sh "rsync #{rsync_options} lib/ #{ruby_dir}/lib"
429
362
  sh "rsync #{rsync_options} test/ #{ruby_dir}/test/rubygems"
@@ -431,7 +364,7 @@ task :update_ruby do
431
364
  end
432
365
 
433
366
  desc "Diffs Ruby HEAD with the currently checked-out copy of RubyGems."
434
- task :diff_ruby do
367
+ task :diff_ruby => 'util/gem_prelude.rb' do
435
368
  options = "-urpN --exclude '*svn*' --exclude '*swp' --exclude '*rbc'"
436
369
 
437
370
  sh "diff #{diff_options} bin/gem #{ruby_dir}/bin/gem; true"
@@ -444,19 +377,19 @@ task :diff_ruby do
444
377
  end
445
378
 
446
379
  desc "Updates Rubinius HEAD with the currently checked-out copy of RubyGems."
447
- task :update_rubinius do
448
- sh "rsync #{rsync_options} bin/gem #{rubinius_dir}/lib/bin/gem"
380
+ task :update_rubinius => 'util/gem_prelude.rb' do
381
+ sh "rsync #{rsync_options} bin/gem #{rubinius_dir}/lib/bin/gem.rb"
449
382
  sh "rsync #{rsync_options} lib/ #{rubinius_dir}/lib"
450
383
  sh "rsync #{rsync_options} test/ #{rubinius_dir}/test/rubygems"
451
- sh "rsync #{rsync_options} util/gem_prelude.rb #{rubinius_dir}/kernel/core/gem_prelude.rb"
384
+ sh "rsync #{rsync_options} util/gem_prelude.rb #{rubinius_dir}/kernel/common/gem_prelude.rb"
452
385
  end
453
386
 
454
387
  desc "Diffs Rubinius HEAD with the currently checked-out copy of RubyGems."
455
- task :diff_rubinius do
456
- sh "diff #{diff_options} bin/gem #{rubinius_dir}/lib/bin/gem; true"
388
+ task :diff_rubinius => 'util/gem_prelude.rb' do
389
+ sh "diff #{diff_options} bin/gem #{rubinius_dir}/lib/bin/gem.rb; true"
457
390
  sh "diff #{diff_options} lib/ubygems.rb #{rubinius_dir}/lib/ubygems.rb; true"
458
391
  sh "diff #{diff_options} lib/rubygems.rb #{rubinius_dir}/lib/rubygems.rb; true"
459
392
  sh "diff #{diff_options} lib/rubygems #{rubinius_dir}/lib/rubygems; true"
460
393
  sh "diff #{diff_options} test #{rubinius_dir}/test/rubygems; true"
461
- sh "diff #{diff_options} util/gem_prelude.rb #{rubinius_dir}/kernel/core/gem_prelude.rb; true"
394
+ sh "diff #{diff_options} util/gem_prelude.rb #{rubinius_dir}/kernel/common/gem_prelude.rb; true"
462
395
  end