rubygems-update 2.1.0.rc.1 → 2.1.0.rc.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 (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
+