shoesgem 0.1430.0 → 0.1469.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. data/shoes/VERSION.txt +1 -1
  2. data/shoes/freetype6.dll +0 -0
  3. data/shoes/lib/shoes/help.rb +2 -1
  4. data/shoes/libcairo-2.dll +0 -0
  5. data/shoes/libeay32.dll +0 -0
  6. data/shoes/libexpat-1.dll +0 -0
  7. data/shoes/libfontconfig-1.dll +0 -0
  8. data/shoes/libgio-2.0-0.dll +0 -0
  9. data/shoes/libglib-2.0-0.dll +0 -0
  10. data/shoes/libgmodule-2.0-0.dll +0 -0
  11. data/shoes/libgobject-2.0-0.dll +0 -0
  12. data/shoes/libgthread-2.0-0.dll +0 -0
  13. data/shoes/libiconv2.dll +0 -0
  14. data/shoes/libjpeg-8.dll +0 -0
  15. data/shoes/libpango-1.0-0.dll +0 -0
  16. data/shoes/libpangocairo-1.0-0.dll +0 -0
  17. data/shoes/libpangoft2-1.0-0.dll +0 -0
  18. data/shoes/libpangowin32-1.0-0.dll +0 -0
  19. data/shoes/libpng14-14.dll +0 -0
  20. data/shoes/libportaudio-2.dll +0 -0
  21. data/shoes/libshoes.dll +0 -0
  22. data/shoes/libssl32.dll +0 -0
  23. data/shoes/libungif4.dll +0 -0
  24. data/shoes/msvcrt-ruby191.dll +0 -0
  25. data/shoes/nsis/shoes.nsi +1 -1
  26. data/shoes/readline5.dll +0 -0
  27. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/fast_xs.so +0 -0
  28. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot_scan.so +0 -0
  29. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/generator.so +0 -0
  30. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/parser.so +0 -0
  31. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/constants.rb +0 -0
  32. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/database.rb +152 -305
  33. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/errors.rb +0 -24
  34. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/pragmas.rb +16 -7
  35. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/resultset.rb +26 -80
  36. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/statement.rb +22 -107
  37. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/translator.rb +6 -1
  38. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/value.rb +0 -0
  39. data/shoes/ruby/gems/1.9.1/gems/{sqlite3-ruby-1.2.5-x86-mswin32 → sqlite3-ruby-1.3.0}/lib/sqlite3/version.rb +3 -3
  40. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3.rb +11 -0
  41. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3_native.so +0 -0
  42. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.3.0.gemspec +48 -0
  43. data/shoes/ruby/lib/ftsearch/suffix_array_reader.rb +4 -2
  44. data/shoes/ruby/lib/i386-mingw32/bigdecimal.so +0 -0
  45. data/shoes/ruby/lib/i386-mingw32/binject.so +0 -0
  46. data/shoes/ruby/lib/i386-mingw32/bloops.so +0 -0
  47. data/shoes/ruby/lib/i386-mingw32/chipmunk.so +0 -0
  48. data/shoes/ruby/lib/i386-mingw32/continuation.so +0 -0
  49. data/shoes/ruby/lib/i386-mingw32/coverage.so +0 -0
  50. data/shoes/ruby/lib/i386-mingw32/curses.so +0 -0
  51. data/shoes/ruby/lib/i386-mingw32/digest/bubblebabble.so +0 -0
  52. data/shoes/ruby/lib/i386-mingw32/digest/md5.so +0 -0
  53. data/shoes/ruby/lib/i386-mingw32/digest/rmd160.so +0 -0
  54. data/shoes/ruby/lib/i386-mingw32/digest/sha1.so +0 -0
  55. data/shoes/ruby/lib/i386-mingw32/digest/sha2.so +0 -0
  56. data/shoes/ruby/lib/i386-mingw32/digest.so +0 -0
  57. data/shoes/ruby/lib/i386-mingw32/dl.so +0 -0
  58. data/shoes/ruby/lib/i386-mingw32/enc/big5.so +0 -0
  59. data/shoes/ruby/lib/i386-mingw32/enc/cp949.so +0 -0
  60. data/shoes/ruby/lib/i386-mingw32/enc/emacs_mule.so +0 -0
  61. data/shoes/ruby/lib/i386-mingw32/enc/encdb.so +0 -0
  62. data/shoes/ruby/lib/i386-mingw32/enc/euc_jp.so +0 -0
  63. data/shoes/ruby/lib/i386-mingw32/enc/euc_kr.so +0 -0
  64. data/shoes/ruby/lib/i386-mingw32/enc/euc_tw.so +0 -0
  65. data/shoes/ruby/lib/i386-mingw32/enc/gb18030.so +0 -0
  66. data/shoes/ruby/lib/i386-mingw32/enc/gb2312.so +0 -0
  67. data/shoes/ruby/lib/i386-mingw32/enc/gbk.so +0 -0
  68. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_1.so +0 -0
  69. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_10.so +0 -0
  70. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_11.so +0 -0
  71. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_13.so +0 -0
  72. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_14.so +0 -0
  73. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_15.so +0 -0
  74. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_16.so +0 -0
  75. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_2.so +0 -0
  76. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_3.so +0 -0
  77. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_4.so +0 -0
  78. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_5.so +0 -0
  79. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_6.so +0 -0
  80. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_7.so +0 -0
  81. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_8.so +0 -0
  82. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_9.so +0 -0
  83. data/shoes/ruby/lib/i386-mingw32/enc/koi8_r.so +0 -0
  84. data/shoes/ruby/lib/i386-mingw32/enc/koi8_u.so +0 -0
  85. data/shoes/ruby/lib/i386-mingw32/enc/shift_jis.so +0 -0
  86. data/shoes/ruby/lib/i386-mingw32/enc/trans/big5.so +0 -0
  87. data/shoes/ruby/lib/i386-mingw32/enc/trans/chinese.so +0 -0
  88. data/shoes/ruby/lib/i386-mingw32/enc/trans/escape.so +0 -0
  89. data/shoes/ruby/lib/i386-mingw32/enc/trans/gb18030.so +0 -0
  90. data/shoes/ruby/lib/i386-mingw32/enc/trans/gbk.so +0 -0
  91. data/shoes/ruby/lib/i386-mingw32/enc/trans/iso2022.so +0 -0
  92. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese.so +0 -0
  93. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_euc.so +0 -0
  94. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_sjis.so +0 -0
  95. data/shoes/ruby/lib/i386-mingw32/enc/trans/korean.so +0 -0
  96. data/shoes/ruby/lib/i386-mingw32/enc/trans/single_byte.so +0 -0
  97. data/shoes/ruby/lib/i386-mingw32/enc/trans/transdb.so +0 -0
  98. data/shoes/ruby/lib/i386-mingw32/enc/trans/utf_16_32.so +0 -0
  99. data/shoes/ruby/lib/i386-mingw32/enc/utf_16be.so +0 -0
  100. data/shoes/ruby/lib/i386-mingw32/enc/utf_16le.so +0 -0
  101. data/shoes/ruby/lib/i386-mingw32/enc/utf_32be.so +0 -0
  102. data/shoes/ruby/lib/i386-mingw32/enc/utf_32le.so +0 -0
  103. data/shoes/ruby/lib/i386-mingw32/enc/windows_1251.so +0 -0
  104. data/shoes/ruby/lib/i386-mingw32/etc.so +0 -0
  105. data/shoes/ruby/lib/i386-mingw32/fcntl.so +0 -0
  106. data/shoes/ruby/lib/i386-mingw32/fiber.so +0 -0
  107. data/shoes/ruby/lib/i386-mingw32/ftsearchrt.so +0 -0
  108. data/shoes/ruby/lib/i386-mingw32/gdbm.so +0 -0
  109. data/shoes/ruby/lib/i386-mingw32/iconv.so +0 -0
  110. data/shoes/ruby/lib/i386-mingw32/io/wait.so +0 -0
  111. data/shoes/ruby/lib/i386-mingw32/json/ext/generator.so +0 -0
  112. data/shoes/ruby/lib/i386-mingw32/json/ext/parser.so +0 -0
  113. data/shoes/ruby/lib/i386-mingw32/mathn/complex.so +0 -0
  114. data/shoes/ruby/lib/i386-mingw32/mathn/rational.so +0 -0
  115. data/shoes/ruby/lib/i386-mingw32/nkf.so +0 -0
  116. data/shoes/ruby/lib/i386-mingw32/openssl.so +0 -0
  117. data/shoes/ruby/lib/i386-mingw32/racc/cparse.so +0 -0
  118. data/shoes/ruby/lib/i386-mingw32/readline.so +0 -0
  119. data/shoes/ruby/lib/i386-mingw32/ripper.so +0 -0
  120. data/shoes/ruby/lib/i386-mingw32/sdbm.so +0 -0
  121. data/shoes/ruby/lib/i386-mingw32/socket.so +0 -0
  122. data/shoes/ruby/lib/i386-mingw32/stringio.so +0 -0
  123. data/shoes/ruby/lib/i386-mingw32/strscan.so +0 -0
  124. data/shoes/ruby/lib/i386-mingw32/syck.so +0 -0
  125. data/shoes/ruby/lib/i386-mingw32/win32ole.so +0 -0
  126. data/shoes/ruby/lib/i386-mingw32/zlib.so +0 -0
  127. data/shoes/ruby/lib/rbconfig/datadir.rb +24 -24
  128. data/shoes/ruby/lib/rubygems/builder.rb +88 -88
  129. data/shoes/ruby/lib/rubygems/command.rb +406 -406
  130. data/shoes/ruby/lib/rubygems/command_manager.rb +146 -146
  131. data/shoes/ruby/lib/rubygems/commands/build_command.rb +53 -53
  132. data/shoes/ruby/lib/rubygems/commands/cert_command.rb +86 -86
  133. data/shoes/ruby/lib/rubygems/commands/check_command.rb +75 -75
  134. data/shoes/ruby/lib/rubygems/commands/cleanup_command.rb +91 -91
  135. data/shoes/ruby/lib/rubygems/commands/contents_command.rb +74 -74
  136. data/shoes/ruby/lib/rubygems/commands/dependency_command.rb +188 -188
  137. data/shoes/ruby/lib/rubygems/commands/environment_command.rb +128 -128
  138. data/shoes/ruby/lib/rubygems/commands/fetch_command.rb +62 -62
  139. data/shoes/ruby/lib/rubygems/commands/generate_index_command.rb +57 -57
  140. data/shoes/ruby/lib/rubygems/commands/help_command.rb +172 -172
  141. data/shoes/ruby/lib/rubygems/commands/install_command.rb +148 -148
  142. data/shoes/ruby/lib/rubygems/commands/list_command.rb +35 -35
  143. data/shoes/ruby/lib/rubygems/commands/lock_command.rb +110 -110
  144. data/shoes/ruby/lib/rubygems/commands/mirror_command.rb +111 -111
  145. data/shoes/ruby/lib/rubygems/commands/outdated_command.rb +33 -33
  146. data/shoes/ruby/lib/rubygems/commands/pristine_command.rb +93 -93
  147. data/shoes/ruby/lib/rubygems/commands/query_command.rb +233 -233
  148. data/shoes/ruby/lib/rubygems/commands/rdoc_command.rb +82 -82
  149. data/shoes/ruby/lib/rubygems/commands/search_command.rb +37 -37
  150. data/shoes/ruby/lib/rubygems/commands/server_command.rb +48 -48
  151. data/shoes/ruby/lib/rubygems/commands/sources_command.rb +152 -152
  152. data/shoes/ruby/lib/rubygems/commands/specification_command.rb +77 -77
  153. data/shoes/ruby/lib/rubygems/commands/stale_command.rb +27 -27
  154. data/shoes/ruby/lib/rubygems/commands/uninstall_command.rb +73 -73
  155. data/shoes/ruby/lib/rubygems/commands/unpack_command.rb +95 -95
  156. data/shoes/ruby/lib/rubygems/commands/update_command.rb +181 -181
  157. data/shoes/ruby/lib/rubygems/commands/which_command.rb +87 -87
  158. data/shoes/ruby/lib/rubygems/config_file.rb +266 -266
  159. data/shoes/ruby/lib/rubygems/custom_require.rb +46 -46
  160. data/shoes/ruby/lib/rubygems/defaults.rb +88 -89
  161. data/shoes/ruby/lib/rubygems/dependency.rb +119 -119
  162. data/shoes/ruby/lib/rubygems/dependency_installer.rb +258 -258
  163. data/shoes/ruby/lib/rubygems/dependency_list.rb +165 -165
  164. data/shoes/ruby/lib/rubygems/digest/digest_adapter.rb +39 -39
  165. data/shoes/ruby/lib/rubygems/digest/md5.rb +23 -23
  166. data/shoes/ruby/lib/rubygems/digest/sha1.rb +16 -16
  167. data/shoes/ruby/lib/rubygems/digest/sha2.rb +17 -17
  168. data/shoes/ruby/lib/rubygems/doc_manager.rb +214 -214
  169. data/shoes/ruby/lib/rubygems/exceptions.rb +84 -84
  170. data/shoes/ruby/lib/rubygems/ext/builder.rb +56 -56
  171. data/shoes/ruby/lib/rubygems/ext/configure_builder.rb +24 -24
  172. data/shoes/ruby/lib/rubygems/ext/ext_conf_builder.rb +23 -23
  173. data/shoes/ruby/lib/rubygems/ext/rake_builder.rb +27 -27
  174. data/shoes/ruby/lib/rubygems/ext.rb +18 -18
  175. data/shoes/ruby/lib/rubygems/format.rb +87 -87
  176. data/shoes/ruby/lib/rubygems/gem_openssl.rb +83 -83
  177. data/shoes/ruby/lib/rubygems/gem_path_searcher.rb +100 -100
  178. data/shoes/ruby/lib/rubygems/gem_runner.rb +58 -58
  179. data/shoes/ruby/lib/rubygems/indexer.rb +370 -370
  180. data/shoes/ruby/lib/rubygems/install_update_options.rb +113 -113
  181. data/shoes/ruby/lib/rubygems/installer.rb +575 -578
  182. data/shoes/ruby/lib/rubygems/local_remote_options.rb +134 -134
  183. data/shoes/ruby/lib/rubygems/old_format.rb +148 -148
  184. data/shoes/ruby/lib/rubygems/package/f_sync_dir.rb +24 -24
  185. data/shoes/ruby/lib/rubygems/package/tar_header.rb +245 -245
  186. data/shoes/ruby/lib/rubygems/package/tar_input.rb +219 -219
  187. data/shoes/ruby/lib/rubygems/package/tar_output.rb +143 -143
  188. data/shoes/ruby/lib/rubygems/package/tar_reader/entry.rb +99 -99
  189. data/shoes/ruby/lib/rubygems/package/tar_reader.rb +86 -86
  190. data/shoes/ruby/lib/rubygems/package/tar_writer.rb +180 -180
  191. data/shoes/ruby/lib/rubygems/package.rb +95 -95
  192. data/shoes/ruby/lib/rubygems/platform.rb +178 -178
  193. data/shoes/ruby/lib/rubygems/remote_fetcher.rb +344 -344
  194. data/shoes/ruby/lib/rubygems/require_paths_builder.rb +14 -14
  195. data/shoes/ruby/lib/rubygems/requirement.rb +163 -163
  196. data/shoes/ruby/lib/rubygems/rubygems_version.rb +6 -6
  197. data/shoes/ruby/lib/rubygems/security.rb +786 -786
  198. data/shoes/ruby/lib/rubygems/server.rb +629 -629
  199. data/shoes/ruby/lib/rubygems/source_index.rb +559 -559
  200. data/shoes/ruby/lib/rubygems/source_info_cache.rb +393 -393
  201. data/shoes/ruby/lib/rubygems/source_info_cache_entry.rb +56 -56
  202. data/shoes/ruby/lib/rubygems/spec_fetcher.rb +249 -249
  203. data/shoes/ruby/lib/rubygems/specification.rb +1264 -1262
  204. data/shoes/ruby/lib/rubygems/test_utilities.rb +131 -131
  205. data/shoes/ruby/lib/rubygems/timer.rb +25 -25
  206. data/shoes/ruby/lib/rubygems/uninstaller.rb +242 -242
  207. data/shoes/ruby/lib/rubygems/user_interaction.rb +360 -360
  208. data/shoes/ruby/lib/rubygems/validator.rb +209 -208
  209. data/shoes/ruby/lib/rubygems/version.rb +167 -167
  210. data/shoes/ruby/lib/rubygems/version_option.rb +48 -48
  211. data/shoes/ruby/lib/rubygems.rb +889 -888
  212. data/shoes/ruby/lib/ubygems.rb +10 -10
  213. data/shoes/samples/simple-sqlite3.rb +13 -0
  214. data/shoes/shoes.exe +0 -0
  215. data/shoes/sqlite3.dll +0 -0
  216. data/shoes/static/manual-en.txt +1 -1
  217. data/shoes/zlib.dll +0 -0
  218. data/shoes/zlib1.dll +0 -0
  219. metadata +17 -19
  220. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/api.rb +0 -152
  221. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/driver.rb +0 -307
  222. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/native/driver.rb +0 -219
  223. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3.rb +0 -1
  224. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3_api.so +0 -0
  225. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.2.5-x86-mswin32.gemspec +0 -46
@@ -1,56 +1,56 @@
1
- require 'rubygems'
2
- require 'rubygems/source_index'
3
- require 'rubygems/remote_fetcher'
4
-
5
- ##
6
- # Entries held by a SourceInfoCache.
7
-
8
- class Gem::SourceInfoCacheEntry
9
-
10
- ##
11
- # The source index for this cache entry.
12
-
13
- attr_reader :source_index
14
-
15
- ##
16
- # The size of the of the source entry. Used to determine if the
17
- # source index has changed.
18
-
19
- attr_reader :size
20
-
21
- ##
22
- # Create a cache entry.
23
-
24
- def initialize(si, size)
25
- @source_index = si || Gem::SourceIndex.new({})
26
- @size = size
27
- @all = false
28
- end
29
-
30
- def refresh(source_uri, all)
31
- begin
32
- marshal_uri = URI.join source_uri.to_s, "Marshal.#{Gem.marshal_version}"
33
- remote_size = Gem::RemoteFetcher.fetcher.fetch_size marshal_uri
34
- rescue Gem::RemoteSourceException
35
- yaml_uri = URI.join source_uri.to_s, 'yaml'
36
- remote_size = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri
37
- end
38
-
39
- # TODO Use index_signature instead of size?
40
- return false if @size == remote_size and @all
41
-
42
- updated = @source_index.update source_uri, all
43
- @size = remote_size
44
- @all = all
45
-
46
- updated
47
- end
48
-
49
- def ==(other) # :nodoc:
50
- self.class === other and
51
- @size == other.size and
52
- @source_index == other.source_index
53
- end
54
-
55
- end
56
-
1
+ require 'rubygems'
2
+ require 'rubygems/source_index'
3
+ require 'rubygems/remote_fetcher'
4
+
5
+ ##
6
+ # Entries held by a SourceInfoCache.
7
+
8
+ class Gem::SourceInfoCacheEntry
9
+
10
+ ##
11
+ # The source index for this cache entry.
12
+
13
+ attr_reader :source_index
14
+
15
+ ##
16
+ # The size of the of the source entry. Used to determine if the
17
+ # source index has changed.
18
+
19
+ attr_reader :size
20
+
21
+ ##
22
+ # Create a cache entry.
23
+
24
+ def initialize(si, size)
25
+ @source_index = si || Gem::SourceIndex.new({})
26
+ @size = size
27
+ @all = false
28
+ end
29
+
30
+ def refresh(source_uri, all)
31
+ begin
32
+ marshal_uri = URI.join source_uri.to_s, "Marshal.#{Gem.marshal_version}"
33
+ remote_size = Gem::RemoteFetcher.fetcher.fetch_size marshal_uri
34
+ rescue Gem::RemoteSourceException
35
+ yaml_uri = URI.join source_uri.to_s, 'yaml'
36
+ remote_size = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri
37
+ end
38
+
39
+ # TODO Use index_signature instead of size?
40
+ return false if @size == remote_size and @all
41
+
42
+ updated = @source_index.update source_uri, all
43
+ @size = remote_size
44
+ @all = all
45
+
46
+ updated
47
+ end
48
+
49
+ def ==(other) # :nodoc:
50
+ self.class === other and
51
+ @size == other.size and
52
+ @source_index == other.source_index
53
+ end
54
+
55
+ end
56
+
@@ -1,249 +1,249 @@
1
- require 'zlib'
2
-
3
- require 'rubygems'
4
- require 'rubygems/remote_fetcher'
5
- require 'rubygems/user_interaction'
6
-
7
- ##
8
- # SpecFetcher handles metadata updates from remote gem repositories.
9
-
10
- class Gem::SpecFetcher
11
-
12
- include Gem::UserInteraction
13
-
14
- ##
15
- # The SpecFetcher cache dir.
16
-
17
- attr_reader :dir # :nodoc:
18
-
19
- ##
20
- # Cache of latest specs
21
-
22
- attr_reader :latest_specs # :nodoc:
23
-
24
- ##
25
- # Cache of all spces
26
-
27
- attr_reader :specs # :nodoc:
28
-
29
- @fetcher = nil
30
-
31
- def self.fetcher
32
- @fetcher ||= new
33
- end
34
-
35
- def self.fetcher=(fetcher) # :nodoc:
36
- @fetcher = fetcher
37
- end
38
-
39
- def initialize
40
- @dir = File.join Gem.user_home, '.gem', 'specs'
41
- @update_cache = File.stat(Gem.user_home).uid == Process.uid
42
-
43
- @specs = {}
44
- @latest_specs = {}
45
-
46
- @fetcher = Gem::RemoteFetcher.fetcher
47
- end
48
-
49
- ##
50
- # Retuns the local directory to write +uri+ to.
51
-
52
- def cache_dir(uri)
53
- File.join @dir, "#{uri.host}%#{uri.port}", File.dirname(uri.path)
54
- end
55
-
56
- ##
57
- # Fetch specs matching +dependency+. If +all+ is true, all matching
58
- # versions are returned. If +matching_platform+ is false, all platforms are
59
- # returned.
60
-
61
- def fetch(dependency, all = false, matching_platform = true)
62
- specs_and_sources = find_matching dependency, all, matching_platform
63
-
64
- specs_and_sources.map do |spec_tuple, source_uri|
65
- [fetch_spec(spec_tuple, URI.parse(source_uri)), source_uri]
66
- end
67
-
68
- rescue Gem::RemoteFetcher::FetchError => e
69
- raise unless warn_legacy e do
70
- require 'rubygems/source_info_cache'
71
-
72
- return Gem::SourceInfoCache.search_with_source(dependency,
73
- matching_platform, all)
74
- end
75
- end
76
-
77
- def fetch_spec(spec, source_uri)
78
- spec = spec - [nil, 'ruby', '']
79
- spec_file_name = "#{spec.join '-'}.gemspec"
80
-
81
- uri = source_uri + "#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}"
82
-
83
- cache_dir = cache_dir uri
84
-
85
- local_spec = File.join cache_dir, spec_file_name
86
-
87
- if File.exist? local_spec then
88
- spec = Gem.read_binary local_spec
89
- else
90
- uri.path << '.rz'
91
-
92
- spec = @fetcher.fetch_path uri
93
- spec = Gem.inflate spec
94
-
95
- if @update_cache then
96
- FileUtils.mkdir_p cache_dir
97
-
98
- open local_spec, 'wb' do |io|
99
- io.write spec
100
- end
101
- end
102
- end
103
-
104
- # TODO: Investigate setting Gem::Specification#loaded_from to a URI
105
- Marshal.load spec
106
- end
107
-
108
- ##
109
- # Find spec names that match +dependency+. If +all+ is true, all matching
110
- # versions are returned. If +matching_platform+ is false, gems for all
111
- # platforms are returned.
112
-
113
- def find_matching(dependency, all = false, matching_platform = true)
114
- found = {}
115
-
116
- list(all).each do |source_uri, specs|
117
- found[source_uri] = specs.select do |spec_name, version, spec_platform|
118
- dependency =~ Gem::Dependency.new(spec_name, version) and
119
- (not matching_platform or Gem::Platform.match(spec_platform))
120
- end
121
- end
122
-
123
- specs_and_sources = []
124
-
125
- found.each do |source_uri, specs|
126
- uri_str = source_uri.to_s
127
- specs_and_sources.push(*specs.map { |spec| [spec, uri_str] })
128
- end
129
-
130
- specs_and_sources
131
- end
132
-
133
- ##
134
- # Returns Array of gem repositories that were generated with RubyGems less
135
- # than 1.2.
136
-
137
- def legacy_repos
138
- Gem.sources.reject do |source_uri|
139
- source_uri = URI.parse source_uri
140
- spec_path = source_uri + "specs.#{Gem.marshal_version}.gz"
141
-
142
- begin
143
- @fetcher.fetch_size spec_path
144
- rescue Gem::RemoteFetcher::FetchError
145
- begin
146
- @fetcher.fetch_size(source_uri + 'yaml') # re-raise if non-repo
147
- rescue Gem::RemoteFetcher::FetchError
148
- alert_error "#{source_uri} does not appear to be a repository"
149
- raise
150
- end
151
- false
152
- end
153
- end
154
- end
155
-
156
- ##
157
- # Returns a list of gems available for each source in Gem::sources. If
158
- # +all+ is true, all versions are returned instead of only latest versions.
159
-
160
- def list(all = false)
161
- list = {}
162
-
163
- file = all ? 'specs' : 'latest_specs'
164
-
165
- Gem.sources.each do |source_uri|
166
- source_uri = URI.parse source_uri
167
-
168
- if all and @specs.include? source_uri then
169
- list[source_uri] = @specs[source_uri]
170
- elsif not all and @latest_specs.include? source_uri then
171
- list[source_uri] = @latest_specs[source_uri]
172
- else
173
- specs = load_specs source_uri, file
174
-
175
- cache = all ? @specs : @latest_specs
176
-
177
- cache[source_uri] = specs
178
- list[source_uri] = specs
179
- end
180
- end
181
-
182
- list
183
- end
184
-
185
- ##
186
- # Loads specs in +file+, fetching from +source_uri+ if the on-disk cache is
187
- # out of date.
188
-
189
- def load_specs(source_uri, file)
190
- file_name = "#{file}.#{Gem.marshal_version}"
191
- spec_path = source_uri + "#{file_name}.gz"
192
- cache_dir = cache_dir spec_path
193
- local_file = File.join(cache_dir, file_name)
194
- loaded = false
195
-
196
- if File.exist? local_file then
197
- spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file)
198
-
199
- if spec_dump.nil? then
200
- spec_dump = Gem.read_binary local_file
201
- else
202
- loaded = true
203
- end
204
- else
205
- spec_dump = @fetcher.fetch_path spec_path
206
- loaded = true
207
- end
208
-
209
- specs = Marshal.load spec_dump
210
-
211
- if loaded and @update_cache then
212
- begin
213
- FileUtils.mkdir_p cache_dir
214
-
215
- open local_file, 'wb' do |io|
216
- Marshal.dump specs, io
217
- end
218
- rescue
219
- end
220
- end
221
-
222
- specs
223
- end
224
-
225
- ##
226
- # Warn about legacy repositories if +exception+ indicates only legacy
227
- # repositories are available, and yield to the block. Returns false if the
228
- # exception indicates some other FetchError.
229
-
230
- def warn_legacy(exception)
231
- uri = exception.uri.to_s
232
- if uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ then
233
- alert_warning <<-EOF
234
- RubyGems 1.2+ index not found for:
235
- \t#{legacy_repos.join "\n\t"}
236
-
237
- RubyGems will revert to legacy indexes degrading performance.
238
- EOF
239
-
240
- yield
241
-
242
- return true
243
- end
244
-
245
- false
246
- end
247
-
248
- end
249
-
1
+ require 'zlib'
2
+
3
+ require 'rubygems'
4
+ require 'rubygems/remote_fetcher'
5
+ require 'rubygems/user_interaction'
6
+
7
+ ##
8
+ # SpecFetcher handles metadata updates from remote gem repositories.
9
+
10
+ class Gem::SpecFetcher
11
+
12
+ include Gem::UserInteraction
13
+
14
+ ##
15
+ # The SpecFetcher cache dir.
16
+
17
+ attr_reader :dir # :nodoc:
18
+
19
+ ##
20
+ # Cache of latest specs
21
+
22
+ attr_reader :latest_specs # :nodoc:
23
+
24
+ ##
25
+ # Cache of all spces
26
+
27
+ attr_reader :specs # :nodoc:
28
+
29
+ @fetcher = nil
30
+
31
+ def self.fetcher
32
+ @fetcher ||= new
33
+ end
34
+
35
+ def self.fetcher=(fetcher) # :nodoc:
36
+ @fetcher = fetcher
37
+ end
38
+
39
+ def initialize
40
+ @dir = File.join Gem.user_home, '.gem', 'specs'
41
+ @update_cache = File.stat(Gem.user_home).uid == Process.uid
42
+
43
+ @specs = {}
44
+ @latest_specs = {}
45
+
46
+ @fetcher = Gem::RemoteFetcher.fetcher
47
+ end
48
+
49
+ ##
50
+ # Retuns the local directory to write +uri+ to.
51
+
52
+ def cache_dir(uri)
53
+ File.join @dir, "#{uri.host}%#{uri.port}", File.dirname(uri.path)
54
+ end
55
+
56
+ ##
57
+ # Fetch specs matching +dependency+. If +all+ is true, all matching
58
+ # versions are returned. If +matching_platform+ is false, all platforms are
59
+ # returned.
60
+
61
+ def fetch(dependency, all = false, matching_platform = true)
62
+ specs_and_sources = find_matching dependency, all, matching_platform
63
+
64
+ specs_and_sources.map do |spec_tuple, source_uri|
65
+ [fetch_spec(spec_tuple, URI.parse(source_uri)), source_uri]
66
+ end
67
+
68
+ rescue Gem::RemoteFetcher::FetchError => e
69
+ raise unless warn_legacy e do
70
+ require 'rubygems/source_info_cache'
71
+
72
+ return Gem::SourceInfoCache.search_with_source(dependency,
73
+ matching_platform, all)
74
+ end
75
+ end
76
+
77
+ def fetch_spec(spec, source_uri)
78
+ spec = spec - [nil, 'ruby', '']
79
+ spec_file_name = "#{spec.join '-'}.gemspec"
80
+
81
+ uri = source_uri + "#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}"
82
+
83
+ cache_dir = cache_dir uri
84
+
85
+ local_spec = File.join cache_dir, spec_file_name
86
+
87
+ if File.exist? local_spec then
88
+ spec = Gem.read_binary local_spec
89
+ else
90
+ uri.path << '.rz'
91
+
92
+ spec = @fetcher.fetch_path uri
93
+ spec = Gem.inflate spec
94
+
95
+ if @update_cache then
96
+ FileUtils.mkdir_p cache_dir
97
+
98
+ open local_spec, 'wb' do |io|
99
+ io.write spec
100
+ end
101
+ end
102
+ end
103
+
104
+ # TODO: Investigate setting Gem::Specification#loaded_from to a URI
105
+ Marshal.load spec
106
+ end
107
+
108
+ ##
109
+ # Find spec names that match +dependency+. If +all+ is true, all matching
110
+ # versions are returned. If +matching_platform+ is false, gems for all
111
+ # platforms are returned.
112
+
113
+ def find_matching(dependency, all = false, matching_platform = true)
114
+ found = {}
115
+
116
+ list(all).each do |source_uri, specs|
117
+ found[source_uri] = specs.select do |spec_name, version, spec_platform|
118
+ dependency =~ Gem::Dependency.new(spec_name, version) and
119
+ (not matching_platform or Gem::Platform.match(spec_platform))
120
+ end
121
+ end
122
+
123
+ specs_and_sources = []
124
+
125
+ found.each do |source_uri, specs|
126
+ uri_str = source_uri.to_s
127
+ specs_and_sources.push(*specs.map { |spec| [spec, uri_str] })
128
+ end
129
+
130
+ specs_and_sources
131
+ end
132
+
133
+ ##
134
+ # Returns Array of gem repositories that were generated with RubyGems less
135
+ # than 1.2.
136
+
137
+ def legacy_repos
138
+ Gem.sources.reject do |source_uri|
139
+ source_uri = URI.parse source_uri
140
+ spec_path = source_uri + "specs.#{Gem.marshal_version}.gz"
141
+
142
+ begin
143
+ @fetcher.fetch_size spec_path
144
+ rescue Gem::RemoteFetcher::FetchError
145
+ begin
146
+ @fetcher.fetch_size(source_uri + 'yaml') # re-raise if non-repo
147
+ rescue Gem::RemoteFetcher::FetchError
148
+ alert_error "#{source_uri} does not appear to be a repository"
149
+ raise
150
+ end
151
+ false
152
+ end
153
+ end
154
+ end
155
+
156
+ ##
157
+ # Returns a list of gems available for each source in Gem::sources. If
158
+ # +all+ is true, all versions are returned instead of only latest versions.
159
+
160
+ def list(all = false)
161
+ list = {}
162
+
163
+ file = all ? 'specs' : 'latest_specs'
164
+
165
+ Gem.sources.each do |source_uri|
166
+ source_uri = URI.parse source_uri
167
+
168
+ if all and @specs.include? source_uri then
169
+ list[source_uri] = @specs[source_uri]
170
+ elsif not all and @latest_specs.include? source_uri then
171
+ list[source_uri] = @latest_specs[source_uri]
172
+ else
173
+ specs = load_specs source_uri, file
174
+
175
+ cache = all ? @specs : @latest_specs
176
+
177
+ cache[source_uri] = specs
178
+ list[source_uri] = specs
179
+ end
180
+ end
181
+
182
+ list
183
+ end
184
+
185
+ ##
186
+ # Loads specs in +file+, fetching from +source_uri+ if the on-disk cache is
187
+ # out of date.
188
+
189
+ def load_specs(source_uri, file)
190
+ file_name = "#{file}.#{Gem.marshal_version}"
191
+ spec_path = source_uri + "#{file_name}.gz"
192
+ cache_dir = cache_dir spec_path
193
+ local_file = File.join(cache_dir, file_name)
194
+ loaded = false
195
+
196
+ if File.exist? local_file then
197
+ spec_dump = @fetcher.fetch_path spec_path, File.mtime(local_file)
198
+
199
+ if spec_dump.nil? then
200
+ spec_dump = Gem.read_binary local_file
201
+ else
202
+ loaded = true
203
+ end
204
+ else
205
+ spec_dump = @fetcher.fetch_path spec_path
206
+ loaded = true
207
+ end
208
+
209
+ specs = Marshal.load spec_dump
210
+
211
+ if loaded and @update_cache then
212
+ begin
213
+ FileUtils.mkdir_p cache_dir
214
+
215
+ open local_file, 'wb' do |io|
216
+ Marshal.dump specs, io
217
+ end
218
+ rescue
219
+ end
220
+ end
221
+
222
+ specs
223
+ end
224
+
225
+ ##
226
+ # Warn about legacy repositories if +exception+ indicates only legacy
227
+ # repositories are available, and yield to the block. Returns false if the
228
+ # exception indicates some other FetchError.
229
+
230
+ def warn_legacy(exception)
231
+ uri = exception.uri.to_s
232
+ if uri =~ /specs\.#{Regexp.escape Gem.marshal_version}\.gz$/ then
233
+ alert_warning <<-EOF
234
+ RubyGems 1.2+ index not found for:
235
+ \t#{legacy_repos.join "\n\t"}
236
+
237
+ RubyGems will revert to legacy indexes degrading performance.
238
+ EOF
239
+
240
+ yield
241
+
242
+ return true
243
+ end
244
+
245
+ false
246
+ end
247
+
248
+ end
249
+