rubygems-update 2.1.0.rc.1 → 2.1.0.rc.2

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.

Potentially problematic release.


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

Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/History.txt +11 -3
  5. data/Manifest.txt +1 -0
  6. data/Rakefile +22 -18
  7. data/lib/rubygems.rb +8 -10
  8. data/lib/rubygems/basic_specification.rb +112 -108
  9. data/lib/rubygems/commands/build_command.rb +19 -0
  10. data/lib/rubygems/commands/check_command.rb +7 -0
  11. data/lib/rubygems/commands/cleanup_command.rb +5 -5
  12. data/lib/rubygems/commands/contents_command.rb +8 -0
  13. data/lib/rubygems/commands/dependency_command.rb +11 -0
  14. data/lib/rubygems/commands/environment_command.rb +3 -0
  15. data/lib/rubygems/commands/fetch_command.rb +10 -0
  16. data/lib/rubygems/commands/list_command.rb +12 -1
  17. data/lib/rubygems/commands/mirror_command.rb +6 -0
  18. data/lib/rubygems/commands/outdated_command.rb +9 -0
  19. data/lib/rubygems/commands/owner_command.rb +9 -2
  20. data/lib/rubygems/commands/pristine_command.rb +12 -11
  21. data/lib/rubygems/commands/push_command.rb +8 -2
  22. data/lib/rubygems/commands/query_command.rb +9 -0
  23. data/lib/rubygems/commands/rdoc_command.rb +6 -2
  24. data/lib/rubygems/commands/search_command.rb +14 -1
  25. data/lib/rubygems/commands/sources_command.rb +47 -0
  26. data/lib/rubygems/commands/specification_command.rb +16 -0
  27. data/lib/rubygems/commands/stale_command.rb +10 -0
  28. data/lib/rubygems/commands/uninstall_command.rb +19 -6
  29. data/lib/rubygems/commands/unpack_command.rb +18 -0
  30. data/lib/rubygems/commands/update_command.rb +9 -0
  31. data/lib/rubygems/commands/which_command.rb +11 -0
  32. data/lib/rubygems/commands/yank_command.rb +16 -2
  33. data/lib/rubygems/core_ext/kernel_require.rb +4 -4
  34. data/lib/rubygems/defaults.rb +7 -0
  35. data/lib/rubygems/dependency_installer.rb +1 -4
  36. data/lib/rubygems/ext/builder.rb +118 -0
  37. data/lib/rubygems/installer.rb +7 -60
  38. data/lib/rubygems/package_task.rb +5 -2
  39. data/lib/rubygems/remote_fetcher.rb +1 -1
  40. data/lib/rubygems/security/policy.rb +5 -0
  41. data/lib/rubygems/security/signer.rb +19 -1
  42. data/lib/rubygems/source.rb +7 -3
  43. data/lib/rubygems/source/local.rb +5 -4
  44. data/lib/rubygems/source/specific_file.rb +28 -0
  45. data/lib/rubygems/specification.rb +55 -44
  46. data/lib/rubygems/stub_specification.rb +93 -92
  47. data/lib/rubygems/test_case.rb +10 -9
  48. data/test/rubygems/test_gem.rb +27 -0
  49. data/test/rubygems/test_gem_commands_install_command.rb +1 -0
  50. data/test/rubygems/test_gem_commands_uninstall_command.rb +17 -8
  51. data/test/rubygems/test_gem_ext_builder.rb +97 -2
  52. data/test/rubygems/test_gem_installer.rb +0 -89
  53. data/test/rubygems/test_gem_package.rb +6 -8
  54. data/test/rubygems/test_gem_package_task.rb +23 -2
  55. data/test/rubygems/test_gem_security_policy.rb +11 -0
  56. data/test/rubygems/test_gem_security_signer.rb +6 -0
  57. data/test/rubygems/test_gem_source.rb +23 -0
  58. data/test/rubygems/test_gem_source_installed.rb +28 -0
  59. data/test/rubygems/test_gem_source_local.rb +29 -6
  60. data/test/rubygems/test_gem_source_specific_file.rb +38 -0
  61. data/test/rubygems/test_gem_specification.rb +10 -2
  62. metadata +7 -5
  63. metadata.gz.sig +0 -0
@@ -1,8 +1,8 @@
1
- require 'rubygems/source'
2
-
3
1
  class Gem::Source::Local < Gem::Source
4
2
  def initialize
5
- @uri = nil
3
+ @specs = nil
4
+ @api_uri = nil
5
+ @uri = nil
6
6
  end
7
7
 
8
8
  ##
@@ -22,7 +22,8 @@ class Gem::Source::Local < Gem::Source
22
22
  end
23
23
 
24
24
  def inspect # :nodoc:
25
- "#<%s specs: %p>" % [self.class, @specs.keys]
25
+ keys = @specs ? @specs.keys.sort : 'NOT LOADED'
26
+ "#<%s specs: %p>" % [self.class, keys]
26
27
  end
27
28
 
28
29
  def load_specs(type)
@@ -25,4 +25,32 @@ class Gem::Source::SpecificFile < Gem::Source
25
25
  raise Gem::Exception, "Unable to download '#{spec.full_name}'"
26
26
  end
27
27
 
28
+ def pretty_print q # :nodoc:
29
+ q.group 2, '[Local:', ']' do
30
+ q.breakable
31
+ q.text @path
32
+ end
33
+ end
34
+
35
+ ##
36
+ # Orders this source against +other+.
37
+ #
38
+ # If +other+ is a SpecificFile from a different gem name +nil+ is returned.
39
+ #
40
+ # If +other+ is a SpecificFile from the same gem name the versions are
41
+ # compared using Gem::Version#<=>
42
+ #
43
+ # Otherwise Gem::Source#<=> is used.
44
+
45
+ def <=> other
46
+ case other
47
+ when Gem::Source::SpecificFile then
48
+ return nil if @spec.name != other.spec.name
49
+
50
+ @spec.version <=> other.spec.version
51
+ else
52
+ super
53
+ end
54
+ end
55
+
28
56
  end
@@ -206,15 +206,19 @@ class Gem::Specification < Gem::BasicSpecification
206
206
  attr_reader :version
207
207
 
208
208
  ##
209
- # Paths in the gem to add to <tt>$LOAD_PATH</tt> when this gem is activated.
209
+ # Paths in the gem to add to <code>$LOAD_PATH</code> when this gem is
210
+ # activated.
211
+ #
212
+ # If you have an extension you do not need to add <code>"ext"</code> to the
213
+ # require path, the extension build process will copy the extension files
214
+ # into "lib" for you.
215
+ #
216
+ # The default value is <code>"lib"</code>
210
217
  #
211
218
  # Usage:
212
219
  #
213
220
  # # If all library files are in the root directory...
214
221
  # spec.require_path = '.'
215
- #
216
- # # If you have 'lib' and 'ext' directories...
217
- # spec.require_paths << 'ext'
218
222
 
219
223
  attr_accessor :require_paths
220
224
 
@@ -228,7 +232,7 @@ class Gem::Specification < Gem::BasicSpecification
228
232
  ##
229
233
  # A short summary of this gem's description. Displayed in `gem list -d`.
230
234
  #
231
- # The description should be more detailed than the summary.
235
+ # The #description should be more detailed than the summary.
232
236
  #
233
237
  # Usage:
234
238
  #
@@ -241,21 +245,23 @@ class Gem::Specification < Gem::BasicSpecification
241
245
  #
242
246
  # This is usually Gem::Platform::RUBY or Gem::Platform::CURRENT.
243
247
  #
244
- # Most gems contain pure Ruby code; they should simply leave the default value
245
- # in place. Some gems contain C (or other) code to be compiled into a Ruby
246
- # extension”. The should leave the default value in place unless their code
247
- # will only compile on a certain type of system. Some gems consist of
248
- # pre-compiled code (binary gems). Its especially important that they set
249
- # the platform attribute appropriately. A shortcut is to set the platform to
250
- # Gem::Platform::CURRENT, which will cause the gem builder to set the platform
251
- # to the appropriate value for the system on which the build is being performed.
248
+ # Most gems contain pure Ruby code; they should simply leave the default
249
+ # value in place. Some gems contain C (or other) code to be compiled into a
250
+ # Ruby "extension". The should leave the default value in place unless
251
+ # their code will only compile on a certain type of system. Some gems
252
+ # consist of pre-compiled code ("binary gems"). It's especially important
253
+ # that they set the platform attribute appropriately. A shortcut is to set
254
+ # the platform to Gem::Platform::CURRENT, which will cause the gem builder
255
+ # to set the platform to the appropriate value for the system on which the
256
+ # build is being performed.
252
257
  #
253
- # If this attribute is set to a non-default value, it will be included in the
254
- # filename of the gem when it is built, e.g. fxruby-1.2.0-win32.gem.
258
+ # If this attribute is set to a non-default value, it will be included in
259
+ # the filename of the gem when it is built such as:
260
+ # nokogiri-1.6.0-x86-mingw32.gem
255
261
  #
256
262
  # Usage:
257
263
  #
258
- # spec.platform = Gem::Platform::Win32
264
+ # spec.platform = Gem::Platform.local
259
265
 
260
266
  def platform= platform
261
267
  if @original_platform.nil? or
@@ -357,7 +363,7 @@ class Gem::Specification < Gem::BasicSpecification
357
363
  attr_reader :description
358
364
 
359
365
  ##
360
- # A contact email for this gem
366
+ # A contact email address (or addresses) for this gem
361
367
  #
362
368
  # Usage:
363
369
  #
@@ -473,6 +479,8 @@ class Gem::Specification < Gem::BasicSpecification
473
479
  # Usage:
474
480
  #
475
481
  # spec.extensions << 'ext/rmagic/extconf.rb'
482
+ #
483
+ # See Gem::Ext::Builder for information about writing extensions for gems.
476
484
 
477
485
  def extensions
478
486
  @extensions ||= []
@@ -502,6 +510,8 @@ class Gem::Specification < Gem::BasicSpecification
502
510
  # This should just be the name of your license. The full
503
511
  # text of the license should be inside of the gem when you build it.
504
512
  #
513
+ # You can set multiple licenses with #licenses=
514
+ #
505
515
  # Usage:
506
516
  # spec.license = 'MIT'
507
517
 
@@ -538,15 +548,20 @@ class Gem::Specification < Gem::BasicSpecification
538
548
  end
539
549
 
540
550
  ##
541
- # The version of Ruby required by this gem
551
+ # The version of Ruby required by this gem. The ruby version can be
552
+ # specified to the patch-level:
553
+ #
554
+ # $ ruby -v -e 'p Gem.ruby_version'
555
+ # ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
556
+ # #<Gem::Version "2.0.0.247">
542
557
  #
543
558
  # Usage:
544
559
  #
545
- # # If it will work with 1.8.6 or greater...
560
+ # # This gem will work with 1.8.6 or greater...
546
561
  # spec.required_ruby_version = '>= 1.8.6'
547
562
  #
548
- # # Hopefully by now:
549
- # spec.required_ruby_version = '>= 1.9.2'
563
+ # # Only with ruby 2.0.x
564
+ # spec.required_ruby_version = '~> 2.0'
550
565
 
551
566
  def required_ruby_version= req
552
567
  @required_ruby_version = Gem::Requirement.create req
@@ -554,7 +569,7 @@ class Gem::Specification < Gem::BasicSpecification
554
569
 
555
570
  ##
556
571
  # Lists the external (to RubyGems) requirements that must be met for this gem
557
- # to work. Its simply information for the user.
572
+ # to work. It's simply information for the user.
558
573
  #
559
574
  # Usage:
560
575
  #
@@ -566,7 +581,7 @@ class Gem::Specification < Gem::BasicSpecification
566
581
  end
567
582
 
568
583
  ##
569
- # A collection of unit test files. They will be loaded as unit tests when
584
+ # A collection of unit test files. They will be loaded as unit tests when
570
585
  # the user requests a gem to be unit tested.
571
586
  #
572
587
  # Usage:
@@ -592,7 +607,7 @@ class Gem::Specification < Gem::BasicSpecification
592
607
  #
593
608
  # Deprecated: It is neither supported nor functional.
594
609
 
595
- attr_accessor :autorequire
610
+ attr_accessor :autorequire # :nodoc:
596
611
 
597
612
  ##
598
613
  # Sets the default executable for this gem.
@@ -615,9 +630,12 @@ class Gem::Specification < Gem::BasicSpecification
615
630
  # The RubyGems version required by this gem
616
631
 
617
632
  attr_reader :required_rubygems_version
633
+
618
634
  ##
619
635
  # The rubyforge project this gem lives under. i.e. RubyGems'
620
636
  # rubyforge_project is "rubygems".
637
+ #
638
+ # This option is deprecated.
621
639
 
622
640
  attr_accessor :rubyforge_project
623
641
 
@@ -768,7 +786,7 @@ class Gem::Specification < Gem::BasicSpecification
768
786
  # -- wilsonb
769
787
 
770
788
  def self.all= specs
771
- @@all = specs
789
+ @@all = @@stubs = specs
772
790
  end
773
791
 
774
792
  ##
@@ -1320,7 +1338,7 @@ class Gem::Specification < Gem::BasicSpecification
1320
1338
  end
1321
1339
 
1322
1340
  ##
1323
- # Singular reader for #authors
1341
+ # Singular reader for #authors. Returns the first author in the list
1324
1342
 
1325
1343
  def author
1326
1344
  val = authors and val.first
@@ -1328,6 +1346,8 @@ class Gem::Specification < Gem::BasicSpecification
1328
1346
 
1329
1347
  ##
1330
1348
  # The list of author names who wrote this gem.
1349
+ #
1350
+ # spec.authors = ['Chad Fowler', 'Jim Weirich', 'Rich Kilmer']
1331
1351
 
1332
1352
  def authors
1333
1353
  @authors ||= []
@@ -1407,7 +1427,9 @@ class Gem::Specification < Gem::BasicSpecification
1407
1427
  end
1408
1428
 
1409
1429
  ##
1410
- # The date this gem was created. Lazily defaults to TODAY.
1430
+ # The date this gem was created. Lazily defaults to the current UTC date.
1431
+ #
1432
+ # There is no need to set this in your gem specification.
1411
1433
 
1412
1434
  def date
1413
1435
  @date ||= TODAY
@@ -1454,7 +1476,7 @@ class Gem::Specification < Gem::BasicSpecification
1454
1476
  # Deprecated: The name of the gem is assumed to be the name of the
1455
1477
  # executable now. See Gem.bin_path.
1456
1478
 
1457
- def default_executable
1479
+ def default_executable # :nodoc:
1458
1480
  if defined?(@default_executable) and @default_executable
1459
1481
  result = @default_executable
1460
1482
  elsif @executables and @executables.size == 1
@@ -1513,7 +1535,7 @@ class Gem::Specification < Gem::BasicSpecification
1513
1535
  end
1514
1536
 
1515
1537
  ##
1516
- # A long description of this gem
1538
+ # A detailed description of this gem. See also #summary
1517
1539
 
1518
1540
  def description= str
1519
1541
  @description = str.to_s
@@ -1672,7 +1694,7 @@ class Gem::Specification < Gem::BasicSpecification
1672
1694
  #
1673
1695
  # Formerly used to indicate this gem was RDoc-capable.
1674
1696
 
1675
- def has_rdoc
1697
+ def has_rdoc # :nodoc:
1676
1698
  true
1677
1699
  end
1678
1700
 
@@ -1681,11 +1703,11 @@ class Gem::Specification < Gem::BasicSpecification
1681
1703
  #
1682
1704
  # Formerly used to indicate this gem was RDoc-capable.
1683
1705
 
1684
- def has_rdoc= ignored
1706
+ def has_rdoc= ignored # :nodoc:
1685
1707
  @has_rdoc = true
1686
1708
  end
1687
1709
 
1688
- alias :has_rdoc? :has_rdoc
1710
+ alias :has_rdoc? :has_rdoc # :nodoc:
1689
1711
 
1690
1712
  ##
1691
1713
  # True if this gem has files in test_files
@@ -1818,7 +1840,7 @@ class Gem::Specification < Gem::BasicSpecification
1818
1840
  @licenses ||= []
1819
1841
  end
1820
1842
 
1821
- def filename= path
1843
+ def loaded_from= path # :nodoc:
1822
1844
  super
1823
1845
 
1824
1846
  @bin_dir = nil
@@ -1831,17 +1853,6 @@ class Gem::Specification < Gem::BasicSpecification
1831
1853
  @spec_file = nil
1832
1854
  end
1833
1855
 
1834
- ##
1835
- # Path this gemspec was loaded from. This attribute is not persisted.
1836
-
1837
- alias loaded_from filename
1838
-
1839
- ##
1840
- # Set the location a Specification was loaded from. +obj+ is converted
1841
- # to a String.
1842
-
1843
- alias loaded_from= filename=
1844
-
1845
1856
  ##
1846
1857
  # Sets the rubygems_version to the current RubyGems version.
1847
1858
 
@@ -1,119 +1,120 @@
1
- module Gem
2
- # Gem::StubSpecification reads the stub: line from the gemspec
3
- # This prevents us having to eval the entire gemspec in order to
4
- # find out certain information.
5
- class StubSpecification < BasicSpecification
6
- # :nodoc:
7
- PREFIX = "# stub: "
8
-
9
- OPEN_MODE = # :nodoc:
10
- if Object.const_defined? :Encoding then
11
- 'r:UTF-8:-'
12
- else
13
- 'r'
14
- end
15
-
16
- # :nodoc:
17
- class StubLine
18
- attr_reader :parts
1
+ ##
2
+ # Gem::StubSpecification reads the stub: line from the gemspec. This prevents
3
+ # us having to eval the entire gemspec in order to find out certain
4
+ # information.
5
+
6
+ class Gem::StubSpecification < Gem::BasicSpecification
7
+ # :nodoc:
8
+ PREFIX = "# stub: "
9
+
10
+ OPEN_MODE = # :nodoc:
11
+ if Object.const_defined? :Encoding then
12
+ 'r:UTF-8:-'
13
+ else
14
+ 'r'
15
+ end
19
16
 
20
- def initialize(data)
21
- @parts = data[PREFIX.length..-1].split(" ")
22
- end
17
+ class StubLine # :nodoc: all
18
+ attr_reader :parts
23
19
 
24
- def name
25
- @parts[0]
26
- end
20
+ def initialize(data)
21
+ @parts = data[PREFIX.length..-1].split(" ")
22
+ end
27
23
 
28
- def version
29
- Gem::Version.new @parts[1]
30
- end
24
+ def name
25
+ @parts[0]
26
+ end
31
27
 
32
- def platform
33
- Gem::Platform.new @parts[2]
34
- end
28
+ def version
29
+ Gem::Version.new @parts[1]
30
+ end
35
31
 
36
- def require_paths
37
- @parts[3..-1].join(" ").split("\0")
38
- end
32
+ def platform
33
+ Gem::Platform.new @parts[2]
39
34
  end
40
35
 
41
- def initialize(filename)
42
- self.filename = filename
43
- @data = nil
44
- @spec = nil
36
+ def require_paths
37
+ @parts[3..-1].join(" ").split("\0")
45
38
  end
39
+ end
46
40
 
47
- ##
48
- # Name of the gem
41
+ def initialize(filename)
42
+ self.loaded_from = filename
43
+ @data = nil
44
+ @spec = nil
45
+ end
49
46
 
50
- def name
51
- @name ||= data.name
52
- end
47
+ ##
48
+ # True when this gem has been activated
53
49
 
54
- ##
55
- # Version of the gem
50
+ def activated?
51
+ loaded = Gem.loaded_specs[name]
52
+ loaded && loaded.version == version
53
+ end
56
54
 
57
- def version
58
- @version ||= data.version
55
+ ##
56
+ # If the gemspec contains a stubline, returns a StubLine instance. Otherwise
57
+ # returns the full Gem::Specification.
58
+
59
+ def data
60
+ unless @data
61
+ open loaded_from, OPEN_MODE do |file|
62
+ begin
63
+ file.readline # discard encoding line
64
+ stubline = file.readline.chomp
65
+ @data = StubLine.new(stubline) if stubline.start_with?(PREFIX)
66
+ rescue EOFError
67
+ end
68
+ end
59
69
  end
60
70
 
61
- ##
62
- # Platform of the gem
71
+ @data ||= to_spec
72
+ end
63
73
 
64
- def platform
65
- @platform ||= data.platform
66
- end
74
+ private :data
67
75
 
68
- ##
69
- # Require paths of the gem
76
+ ##
77
+ # Name of the gem
70
78
 
71
- def require_paths
72
- @require_paths ||= data.require_paths
73
- end
79
+ def name
80
+ @name ||= data.name
81
+ end
74
82
 
75
- ##
76
- # The full Gem::Specification for this gem, loaded from evalling its gemspec
83
+ ##
84
+ # Platform of the gem
77
85
 
78
- def to_spec
79
- @spec ||= Gem::Specification.load(filename)
80
- end
86
+ def platform
87
+ @platform ||= data.platform
88
+ end
81
89
 
82
- ##
83
- # True when this gem has been activated
90
+ ##
91
+ # Require paths of the gem
84
92
 
85
- def activated?
86
- loaded = Gem.loaded_specs[name]
87
- loaded && loaded.version == version
88
- end
93
+ def require_paths
94
+ @require_paths ||= data.require_paths
95
+ end
89
96
 
90
- ##
91
- # Is this StubSpecification valid? i.e. have we found a stub line, OR does
92
- # the filename contain a valid gemspec?
97
+ ##
98
+ # The full Gem::Specification for this gem, loaded from evalling its gemspec
93
99
 
94
- def valid?
95
- data
96
- end
100
+ def to_spec
101
+ @spec ||= Gem::Specification.load(loaded_from)
102
+ end
97
103
 
98
- private
99
-
100
- ##
101
- # If the gemspec contains a stubline, returns a StubLine instance. Otherwise
102
- # returns the full Gem::Specification.
103
-
104
- def data
105
- unless @data
106
- open filename, OPEN_MODE do |file|
107
- begin
108
- file.readline # discard encoding line
109
- stubline = file.readline.chomp
110
- @data = StubLine.new(stubline) if stubline.start_with?(PREFIX)
111
- rescue EOFError
112
- end
113
- end
114
- end
104
+ ##
105
+ # Is this StubSpecification valid? i.e. have we found a stub line, OR does
106
+ # the filename contain a valid gemspec?
115
107
 
116
- @data ||= to_spec
117
- end
108
+ def valid?
109
+ data
118
110
  end
111
+
112
+ ##
113
+ # Version of the gem
114
+
115
+ def version
116
+ @version ||= data.version
117
+ end
118
+
119
119
  end
120
+