rubygems-update 0.8.4 → 0.8.5
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.
- data/ChangeLog +42 -0
- data/bin/gem +6 -0
- data/bin/gem_server +363 -34
- data/examples/application/an-app.gemspec +0 -1
- data/examples/application/bin/myapp +1 -1
- data/lib/rubygems/config_file.rb +7 -4
- data/lib/rubygems/custom_require.rb +3 -3
- data/lib/rubygems/doc_manager.rb +0 -1
- data/lib/rubygems/gem_commands.rb +58 -15
- data/lib/rubygems/installer.rb +17 -6
- data/lib/rubygems/remote_installer.rb +14 -4
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/validator.rb +1 -0
- data/test/gemutilities.rb +1 -1
- data/test/test_local_cache.rb +2 -2
- metadata +15 -45
- data/test/data/a-0.0.1.gem +0 -0
- data/test/data/a-0.0.2.gem +0 -0
- data/test/data/b-0.0.2.gem +0 -0
- data/test/data/c-1.2.gem +0 -0
- data/test/data/gemhome/cache/a-0.0.1.gem +0 -0
- data/test/data/gemhome/cache/a-0.0.2.gem +0 -0
- data/test/data/gemhome/cache/b-0.0.2.gem +0 -0
- data/test/data/gemhome/cache/c-1.2.gem +0 -0
- data/test/data/gemhome/gems/a-0.0.1/lib/code.rb +0 -1
- data/test/data/gemhome/gems/a-0.0.2/lib/code.rb +0 -1
- data/test/data/gemhome/gems/b-0.0.2/lib/code.rb +0 -1
- data/test/data/gemhome/gems/c-1.2/lib/code.rb +0 -1
- data/test/data/gemhome/specifications/a-0.0.1.gemspec +0 -8
- data/test/data/gemhome/specifications/a-0.0.2.gemspec +0 -8
- data/test/data/gemhome/specifications/b-0.0.2.gemspec +0 -8
- data/test/data/gemhome/specifications/c-1.2.gemspec +0 -8
- data/test/data/one/one-0.0.1.gem +0 -0
data/ChangeLog
CHANGED
@@ -1,3 +1,45 @@
|
|
1
|
+
2005-02-26 Jim Weirich <jim@weirichhouse.org>
|
2
|
+
|
3
|
+
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
|
4
|
+
Removed warning about generating rdocs on gems w/o an rdoc flag.
|
5
|
+
|
6
|
+
* lib/rubygems/gem_commands.rb
|
7
|
+
(Gem::UpdateCommand::do_rubygems_update): Added --system option to
|
8
|
+
update to specifically update the version of rubygems.
|
9
|
+
(Gem::UpdateCommand::which_to_update): Fixed some refactoring bugs
|
10
|
+
in the which_to_update method.
|
11
|
+
|
12
|
+
* lib/rubygems/remote_installer.rb
|
13
|
+
(Gem::LocalSourceInfoCache::read_cache): switched to Marshal
|
14
|
+
rather than Yaml for local cache.
|
15
|
+
|
16
|
+
* bin/gem: Added requirement for Ruby >= 1.8.0.
|
17
|
+
|
18
|
+
2005-02-10 Chad Fowler <chad@chadfowler.com>
|
19
|
+
* bin/gem_server: Added Martin Ankerl's wonderful new gem_server
|
20
|
+
template
|
21
|
+
|
22
|
+
2005-01-27 Chad Fowler <chad@chadfowler.com>
|
23
|
+
* lib/rubygems/gem_commands.rb: Fixed
|
24
|
+
`gem update` so it accepts a list of gems to update and _only_
|
25
|
+
updates those.
|
26
|
+
* lib/rubygems/installer.rb: Fixed a bug in the new shebang code.
|
27
|
+
* lib/rubygems/remote_installer.rb: Attempt to fix Curt Hibbs'
|
28
|
+
reported Proxy bug without actually having a proxy to test with.
|
29
|
+
|
30
|
+
2005-01-22 Chad Fowler <chad@chadfowler.com>
|
31
|
+
* lib/rubygems/custom_require.rb: Lyle Johnson's fix for Bug #1379
|
32
|
+
|
33
|
+
2005-01-20 Chad Fowler <chad@chadfowler.com>
|
34
|
+
* lib/rubygems/validator.rb: Applied Austin Ziegler/Kasper Schiess's
|
35
|
+
patch to fix unit test running bug.
|
36
|
+
|
37
|
+
2005-01-14 Chad Fowler <chad@chadfowler.com>
|
38
|
+
* lib/rubygems/installer.rb: attempt at fixing Ryan Davis's reported Shebang bug.
|
39
|
+
STILL NOT WORKING, because it doesn't work with ^M characters.
|
40
|
+
* lib/rubygems/config_file.rb: small but ugly error fixed if no config file exists.
|
41
|
+
* lib/rubygems/remote_installer.rb: Fixed bug http://rubyforge.org/tracker/index.php?func=detail&aid=1331&group_id=126&atid=575.
|
42
|
+
|
1
43
|
2005-01-01 Chad Fowler <chad@chadfowler.com>
|
2
44
|
* Released 0.8.4
|
3
45
|
|
data/bin/gem
CHANGED
@@ -3,6 +3,12 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
Gem.manage_gems
|
5
5
|
|
6
|
+
required_version = Gem::Version::Requirement.new(">= 1.8.0")
|
7
|
+
unless required_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
|
8
|
+
puts "Expected Ruby Version #{required_version}, was #{RUBY_VERSION}"
|
9
|
+
exit(1)
|
10
|
+
end
|
11
|
+
|
6
12
|
# We need to preserve the original ARGV to use for passing gem options
|
7
13
|
# to source gems. If there is a -- in the line, strip all options after
|
8
14
|
# it...its for the source building process.
|
data/bin/gem_server
CHANGED
@@ -1,40 +1,320 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
DOC_TEMPLATE = <<-WEBPAGE
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
4
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
5
|
+
<!DOCTYPE html
|
6
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
7
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
8
|
+
|
9
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
10
|
+
<head>
|
11
|
+
<title>RubyGems Documentation Index</title>
|
12
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
13
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" media="screen" />
|
14
|
+
</head>
|
15
|
+
<body>
|
16
|
+
<div id="fileHeader">
|
17
|
+
<h1>RubyGems Documentation Index</h1>
|
18
|
+
</div>
|
19
|
+
<!-- banner header -->
|
20
|
+
|
21
|
+
<div id="bodyContent">
|
22
|
+
<div id="contextContent">
|
23
|
+
<div id="description">
|
24
|
+
<h1>Summary</h1>
|
25
|
+
<p>There are %gem_count% gems installed:</p>
|
26
|
+
<p>
|
27
|
+
START:specs
|
28
|
+
IFNOT:is_last
|
29
|
+
<a href="#%name%">%name%</a>,
|
30
|
+
ENDIF:is_last
|
31
|
+
IF:is_last
|
32
|
+
<a href="#%name%">%name%</a>.
|
33
|
+
ENDIF:is_last
|
34
|
+
END:specs
|
35
|
+
<h1>Gems</h1>
|
36
|
+
|
37
|
+
<dl>
|
20
38
|
START:specs
|
21
|
-
|
22
|
-
|
23
|
-
|
39
|
+
<dt>
|
40
|
+
IF:first_name_entry
|
41
|
+
<a name="%name%"></a>
|
42
|
+
ENDIF:first_name_entry
|
43
|
+
<b>%name% %version%</b>
|
24
44
|
IF:rdoc_installed
|
25
|
-
|
45
|
+
<a href="%doc_path%" target="_blank">[rdoc]</a>
|
26
46
|
ENDIF:rdoc_installed
|
27
47
|
IFNOT:rdoc_installed
|
28
|
-
|
48
|
+
<span title="rdoc not installed">[rdoc]</span>
|
29
49
|
ENDIF:rdoc_installed
|
30
|
-
|
31
|
-
|
50
|
+
IF:homepage
|
51
|
+
<a href="%homepage%" target="_blank" title="%homepage%">[www]</a>
|
52
|
+
ENDIF:homepage
|
53
|
+
IFNOT:homepage
|
54
|
+
<span title="no homepage available">[www]</span>
|
55
|
+
ENDIF:homepage
|
56
|
+
IF:has_deps
|
57
|
+
- depends on
|
58
|
+
START:dependencies
|
59
|
+
IFNOT:is_last
|
60
|
+
<a href="#%name%" title="%version%">%name%</a>,
|
61
|
+
ENDIF:is_last
|
62
|
+
IF:is_last
|
63
|
+
<a href="#%name%" title="%version%">%name%</a>.
|
64
|
+
ENDIF:is_last
|
65
|
+
END:dependencies
|
66
|
+
ENDIF:has_deps
|
67
|
+
</dt>
|
68
|
+
<dd>
|
69
|
+
%summary%
|
70
|
+
IF:executables
|
71
|
+
<br/>
|
72
|
+
|
73
|
+
IF:only_one_executable
|
74
|
+
Executable is
|
75
|
+
ENDIF:only_one_executable
|
76
|
+
|
77
|
+
IFNOT:only_one_executable
|
78
|
+
Executables are
|
79
|
+
ENDIF:only_one_executable
|
80
|
+
|
81
|
+
START:executables
|
82
|
+
IFNOT:is_last
|
83
|
+
<span class="context-item-name">%executable%</span>,
|
84
|
+
ENDIF:is_last
|
85
|
+
IF:is_last
|
86
|
+
<span class="context-item-name">%executable%</span>.
|
87
|
+
ENDIF:is_last
|
88
|
+
END:executables
|
89
|
+
ENDIF:executables
|
90
|
+
<br/>
|
91
|
+
<br/>
|
92
|
+
</dd>
|
32
93
|
END:specs
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
94
|
+
</dl>
|
95
|
+
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
<div id="validator-badges">
|
100
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
101
|
+
</div>
|
102
|
+
</body>
|
103
|
+
</html>
|
104
|
+
WEBPAGE
|
105
|
+
|
106
|
+
|
107
|
+
# CSS is copy & paste from rdoc-style.css, RDoc V1.0.1 - 20041108
|
108
|
+
RDOC_CSS = <<-RDOCCSS
|
109
|
+
body {
|
110
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
111
|
+
font-size: 90%;
|
112
|
+
margin: 0;
|
113
|
+
margin-left: 40px;
|
114
|
+
padding: 0;
|
115
|
+
background: white;
|
116
|
+
}
|
117
|
+
|
118
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
119
|
+
h1 { font-size: 150%; }
|
120
|
+
h2,h3,h4 { margin-top: 1em; }
|
121
|
+
|
122
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
123
|
+
a:hover { background: #039; color: #eef; }
|
124
|
+
|
125
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
126
|
+
td > a {
|
127
|
+
background: transparent;
|
128
|
+
color: #039;
|
129
|
+
text-decoration: none;
|
130
|
+
}
|
131
|
+
|
132
|
+
/* and inside a section title */
|
133
|
+
.section-title > a {
|
134
|
+
background: transparent;
|
135
|
+
color: #eee;
|
136
|
+
text-decoration: none;
|
137
|
+
}
|
138
|
+
|
139
|
+
/* === Structural elements =================================== */
|
140
|
+
|
141
|
+
div#index {
|
142
|
+
margin: 0;
|
143
|
+
margin-left: -40px;
|
144
|
+
padding: 0;
|
145
|
+
font-size: 90%;
|
146
|
+
}
|
147
|
+
|
148
|
+
|
149
|
+
div#index a {
|
150
|
+
margin-left: 0.7em;
|
151
|
+
}
|
152
|
+
|
153
|
+
div#index .section-bar {
|
154
|
+
margin-left: 0px;
|
155
|
+
padding-left: 0.7em;
|
156
|
+
background: #ccc;
|
157
|
+
font-size: small;
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
div#classHeader, div#fileHeader {
|
162
|
+
width: auto;
|
163
|
+
color: white;
|
164
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
165
|
+
margin: 0;
|
166
|
+
margin-left: -40px;
|
167
|
+
border-bottom: 3px solid #006;
|
168
|
+
}
|
169
|
+
|
170
|
+
div#classHeader a, div#fileHeader a {
|
171
|
+
background: inherit;
|
172
|
+
color: white;
|
173
|
+
}
|
174
|
+
|
175
|
+
div#classHeader td, div#fileHeader td {
|
176
|
+
background: inherit;
|
177
|
+
color: white;
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
div#fileHeader {
|
182
|
+
background: #057;
|
183
|
+
}
|
184
|
+
|
185
|
+
div#classHeader {
|
186
|
+
background: #048;
|
187
|
+
}
|
188
|
+
|
189
|
+
|
190
|
+
.class-name-in-header {
|
191
|
+
font-size: 180%;
|
192
|
+
font-weight: bold;
|
193
|
+
}
|
194
|
+
|
195
|
+
|
196
|
+
div#bodyContent {
|
197
|
+
padding: 0 1.5em 0 1.5em;
|
198
|
+
}
|
199
|
+
|
200
|
+
div#description {
|
201
|
+
padding: 0.5em 1.5em;
|
202
|
+
background: #efefef;
|
203
|
+
border: 1px dotted #999;
|
204
|
+
}
|
205
|
+
|
206
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
207
|
+
color: #125;;
|
208
|
+
background: transparent;
|
209
|
+
}
|
210
|
+
|
211
|
+
div#validator-badges {
|
212
|
+
text-align: center;
|
213
|
+
}
|
214
|
+
div#validator-badges img { border: 0; }
|
215
|
+
|
216
|
+
div#copyright {
|
217
|
+
color: #333;
|
218
|
+
background: #efefef;
|
219
|
+
font: 0.75em sans-serif;
|
220
|
+
margin-top: 5em;
|
221
|
+
margin-bottom: 0;
|
222
|
+
padding: 0.5em 2em;
|
223
|
+
}
|
224
|
+
|
225
|
+
|
226
|
+
/* === Classes =================================== */
|
227
|
+
|
228
|
+
table.header-table {
|
229
|
+
color: white;
|
230
|
+
font-size: small;
|
231
|
+
}
|
232
|
+
|
233
|
+
.type-note {
|
234
|
+
font-size: small;
|
235
|
+
color: #DEDEDE;
|
236
|
+
}
|
237
|
+
|
238
|
+
.xxsection-bar {
|
239
|
+
background: #eee;
|
240
|
+
color: #333;
|
241
|
+
padding: 3px;
|
242
|
+
}
|
243
|
+
|
244
|
+
.section-bar {
|
245
|
+
color: #333;
|
246
|
+
border-bottom: 1px solid #999;
|
247
|
+
margin-left: -20px;
|
248
|
+
}
|
249
|
+
|
250
|
+
|
251
|
+
.section-title {
|
252
|
+
background: #79a;
|
253
|
+
color: #eee;
|
254
|
+
padding: 3px;
|
255
|
+
margin-top: 2em;
|
256
|
+
margin-left: -30px;
|
257
|
+
border: 1px solid #999;
|
258
|
+
}
|
259
|
+
|
260
|
+
.top-aligned-row { vertical-align: top }
|
261
|
+
.bottom-aligned-row { vertical-align: bottom }
|
262
|
+
|
263
|
+
/* --- Context section classes ----------------------- */
|
264
|
+
|
265
|
+
.context-row { }
|
266
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
267
|
+
.context-item-value { font-size: small; color: #448; }
|
268
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
269
|
+
|
270
|
+
/* --- Method classes -------------------------- */
|
271
|
+
.method-detail {
|
272
|
+
background: #efefef;
|
273
|
+
padding: 0;
|
274
|
+
margin-top: 0.5em;
|
275
|
+
margin-bottom: 1em;
|
276
|
+
border: 1px dotted #ccc;
|
277
|
+
}
|
278
|
+
.method-heading {
|
279
|
+
color: black;
|
280
|
+
background: #ccc;
|
281
|
+
border-bottom: 1px solid #666;
|
282
|
+
padding: 0.2em 0.5em 0 0.5em;
|
283
|
+
}
|
284
|
+
.method-signature { color: black; background: inherit; }
|
285
|
+
.method-name { font-weight: bold; }
|
286
|
+
.method-args { font-style: italic; }
|
287
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
288
|
+
|
289
|
+
/* --- Source code sections -------------------- */
|
290
|
+
|
291
|
+
a.source-toggle { font-size: 90%; }
|
292
|
+
div.method-source-code {
|
293
|
+
background: #262626;
|
294
|
+
color: #ffdead;
|
295
|
+
margin: 1em;
|
296
|
+
padding: 0.5em;
|
297
|
+
border: 1px dashed #999;
|
298
|
+
overflow: hidden;
|
299
|
+
}
|
300
|
+
|
301
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
302
|
+
|
303
|
+
/* --- Ruby keyword styles --------------------- */
|
304
|
+
|
305
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
306
|
+
|
307
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
308
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
309
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
310
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
311
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
312
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
313
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
314
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
315
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
316
|
+
RDOCCSS
|
317
|
+
|
38
318
|
|
39
319
|
|
40
320
|
##
|
@@ -78,27 +358,76 @@ if __FILE__ == $0
|
|
78
358
|
res.body << Gem::SourceIndex.from_installed_gems(fn).to_yaml
|
79
359
|
}
|
80
360
|
|
361
|
+
s.mount_proc("/rdoc-style.css") { |req, res|
|
362
|
+
fn = File.join(options[:gemdir] || Gem.dir, "specifications")
|
363
|
+
res['content-type'] = 'text/css'
|
364
|
+
res['date'] = File.stat(fn).mtime
|
365
|
+
res.body << RDOC_CSS
|
366
|
+
}
|
367
|
+
|
81
368
|
s.mount_proc("/") { |req, res|
|
82
369
|
specs = []
|
83
370
|
specifications_dir = File.join(options[:gemdir] || Gem.dir, "specifications")
|
371
|
+
total_file_count = 0
|
84
372
|
Gem::SourceIndex.from_installed_gems(specifications_dir).each do |path, spec|
|
373
|
+
total_file_count += spec.files.size
|
374
|
+
deps = spec.dependencies.collect { |dep|
|
375
|
+
{
|
376
|
+
"name" => dep.name,
|
377
|
+
"version" => dep.version_requirements.to_s,
|
378
|
+
}
|
379
|
+
}
|
380
|
+
deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
|
381
|
+
deps.last["is_last"] = true unless deps.empty?
|
382
|
+
|
383
|
+
# executables
|
384
|
+
executables = spec.executables.sort.collect { |exec| {"executable" => exec} }
|
385
|
+
executables = nil if executables.empty?
|
386
|
+
executables.last["is_last"] = true if executables
|
387
|
+
|
85
388
|
specs << {
|
86
|
-
"
|
87
|
-
"
|
389
|
+
"authors" => spec.authors.sort.join(", "),
|
390
|
+
"date" => spec.date.to_s,
|
391
|
+
"dependencies" => deps,
|
392
|
+
"doc_path" => ('/doc_root/' + spec.full_name + '/rdoc/index.html'),
|
393
|
+
"executables" => executables,
|
394
|
+
"only_one_executable" => (executables && executables.size==1),
|
88
395
|
"full_name" => spec.full_name,
|
89
|
-
"
|
396
|
+
"has_deps" => !deps.empty?,
|
397
|
+
"homepage" => spec.homepage,
|
398
|
+
"name" => spec.name,
|
90
399
|
"rdoc_installed" => Gem::DocManager.new(spec).rdoc_installed?,
|
91
|
-
"
|
400
|
+
"summary" => spec.summary,
|
401
|
+
"version" => spec.version.to_s,
|
92
402
|
}
|
93
403
|
end
|
94
404
|
specs = specs.sort_by { |spec| [spec["name"].downcase, spec["version"]] }
|
405
|
+
specs.last["is_last"] = true
|
406
|
+
|
407
|
+
# tag all specs with first_name_entry
|
408
|
+
last_spec = nil
|
409
|
+
specs.each do |spec|
|
410
|
+
is_first = last_spec.nil? || (last_spec["name"].downcase != spec["name"].downcase)
|
411
|
+
spec["first_name_entry"] = is_first
|
412
|
+
last_spec = spec
|
413
|
+
end
|
414
|
+
|
415
|
+
# create page from template
|
95
416
|
template = TemplatePage.new(DOC_TEMPLATE)
|
96
417
|
res['content-type'] = 'text/html'
|
97
|
-
template.write_html_on(
|
418
|
+
template.write_html_on(
|
419
|
+
res.body,
|
420
|
+
{
|
421
|
+
"gem_count" => specs.size.to_s,
|
422
|
+
"specs" => specs,
|
423
|
+
"total_file_count" => total_file_count.to_s,
|
424
|
+
}
|
425
|
+
)
|
426
|
+
|
98
427
|
}
|
99
428
|
{
|
100
429
|
"/gems" => "/cache/",
|
101
|
-
"/doc_root" => "/doc/"
|
430
|
+
"/doc_root" => "/doc/",
|
102
431
|
}.each do |mount_point, mount_dir|
|
103
432
|
s.mount(
|
104
433
|
mount_point,
|
@@ -8,7 +8,6 @@ spec = Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.summary = "This gem demonstrates executable scripts"
|
10
10
|
s.requirements << 'a computer processor'
|
11
|
-
s.add_dependency("session", "> 0.0.0")
|
12
11
|
s.files = Dir.glob("lib/**/*").delete_if {|item| item.include?("CVS")}
|
13
12
|
s.files.concat Dir.glob("bin/**/*").delete_if {|item| item.include?("CVS")}
|
14
13
|
s.require_path = 'lib'
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -8,11 +8,14 @@ module Gem
|
|
8
8
|
|
9
9
|
def initialize(arg_list)
|
10
10
|
handle_arguments(arg_list)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
begin
|
12
|
+
@hash = open(config_file_name) {|f| YAML.load(f) }
|
13
|
+
rescue ArgumentError
|
14
|
+
warn "Failed to load #{config_file_name}"
|
15
|
+
rescue Errno::ENOENT
|
16
|
+
warn "Config file #{config_file_name} does not exist"
|
15
17
|
end
|
18
|
+
@hash ||= {}
|
16
19
|
end
|
17
20
|
|
18
21
|
def config_file_name
|
@@ -16,14 +16,14 @@ module Kernel
|
|
16
16
|
#
|
17
17
|
def require(path)
|
18
18
|
require__ path
|
19
|
-
rescue LoadError
|
19
|
+
rescue LoadError => load_error
|
20
20
|
begin
|
21
21
|
@gempath_searcher ||= Gem::GemPathSearcher.new
|
22
22
|
if spec = @gempath_searcher.find(path)
|
23
23
|
Gem.activate(spec.name, true, "= #{spec.version}")
|
24
24
|
require__ path
|
25
25
|
else
|
26
|
-
|
26
|
+
raise load_error
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -101,7 +101,7 @@ module Gem
|
|
101
101
|
# Returns library directories glob for a gemspec. For example,
|
102
102
|
# '/usr/local/lib/ruby/gems/1.8/gems/foobar-1.0/{lib,ext}'
|
103
103
|
def lib_dirs(spec)
|
104
|
-
"#{spec.full_gem_path}
|
104
|
+
"#{spec.full_gem_path}/{#{spec.require_paths.join(',')}}"
|
105
105
|
end
|
106
106
|
|
107
107
|
end # class Gem::GemPathLoader
|
data/lib/rubygems/doc_manager.rb
CHANGED
@@ -44,7 +44,6 @@ module Gem
|
|
44
44
|
raise DocumentError, "ERROR: RDoc documentation generator not installed!"
|
45
45
|
end
|
46
46
|
say "Installing RDoc documentation for #{@spec.full_name}..."
|
47
|
-
say "WARNING: Generating RDoc on .gem that may not have RDoc." unless @spec.has_rdoc?
|
48
47
|
rdoc_dir = File.join(@doc_dir, "rdoc")
|
49
48
|
begin
|
50
49
|
source_dirs = @spec.require_paths.clone.concat(@spec.extra_rdoc_files)
|
@@ -153,6 +153,10 @@ module Gem
|
|
153
153
|
rescue Gem::LoadError => e
|
154
154
|
say " -> Local installation can't proceed due to LoadError: #{e.message}"
|
155
155
|
rescue => e
|
156
|
+
# TODO: Fix this handle to allow the error to propagate to
|
157
|
+
# the top level handler. Example the other errors as
|
158
|
+
# well. This implementation here looks suspicious to me --
|
159
|
+
# JimWeirich (4/Jan/05)
|
156
160
|
alert_error "Error installing gem #{gem_name}[.gem]: #{e.message}"
|
157
161
|
return
|
158
162
|
end
|
@@ -498,7 +502,7 @@ module Gem
|
|
498
502
|
def initialize
|
499
503
|
super(
|
500
504
|
'update',
|
501
|
-
'Upgrade
|
505
|
+
'Upgrade currently installed gems in the local repository',
|
502
506
|
{
|
503
507
|
:generate_rdoc => true,
|
504
508
|
:force => false,
|
@@ -506,6 +510,10 @@ module Gem
|
|
506
510
|
:install_dir => Gem.dir
|
507
511
|
})
|
508
512
|
add_install_update_options
|
513
|
+
add_option('--system',
|
514
|
+
'Update the RubyGems system software') do |value, options|
|
515
|
+
options[:system] = value
|
516
|
+
end
|
509
517
|
end
|
510
518
|
|
511
519
|
def defaults_str
|
@@ -513,8 +521,21 @@ module Gem
|
|
513
521
|
"--install-dir #{Gem.dir}"
|
514
522
|
end
|
515
523
|
|
524
|
+
def arguments
|
525
|
+
"GEMNAME(s) name of gem(s) to update"
|
526
|
+
end
|
527
|
+
|
528
|
+
|
516
529
|
def execute
|
517
|
-
|
530
|
+
if options[:system]
|
531
|
+
say "Upgrading RubyGems..."
|
532
|
+
if ! options[:args].empty?
|
533
|
+
fail "No gem names are allowed with the --system option"
|
534
|
+
end
|
535
|
+
options[:args] = ["rubygems-update"]
|
536
|
+
else
|
537
|
+
say "Upgrading installed gems..."
|
538
|
+
end
|
518
539
|
hig = highest_installed_gems = {}
|
519
540
|
Gem::SourceIndex.from_installed_gems.each do |name, spec|
|
520
541
|
if hig[spec.name].nil? or hig[spec.name].version < spec.version
|
@@ -522,20 +543,15 @@ module Gem
|
|
522
543
|
end
|
523
544
|
end
|
524
545
|
remote_gemspecs = Gem::RemoteInstaller.new(options).search(//)
|
525
|
-
# For some reason, this is an array of arrays. The actual list
|
526
|
-
# the first and only element. If there
|
527
|
-
# more.
|
546
|
+
# For some reason, this is an array of arrays. The actual list
|
547
|
+
# of specifications is the first and only element. If there
|
548
|
+
# were more remote sources, perhaps there would be more.
|
528
549
|
remote_gemspecs = remote_gemspecs.flatten
|
529
|
-
gems_to_update =
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
last
|
535
|
-
if hrg and l_spec.version < hrg.version
|
536
|
-
gems_to_update << l_name
|
537
|
-
end
|
538
|
-
end
|
550
|
+
gems_to_update = if(options[:args].empty?) then
|
551
|
+
which_to_update(highest_installed_gems, remote_gemspecs)
|
552
|
+
else
|
553
|
+
options[:args]
|
554
|
+
end
|
539
555
|
options[:domain] = :remote # install from remote source
|
540
556
|
install_command = command_manager['install']
|
541
557
|
gems_to_update.uniq.sort.each do |name|
|
@@ -544,9 +560,36 @@ module Gem
|
|
544
560
|
install_command.merge_options(options)
|
545
561
|
install_command.execute
|
546
562
|
end
|
563
|
+
if gems_to_update.include?("rubygems-update")
|
564
|
+
say "Updating version of RubyGems"
|
565
|
+
do_rubygems_update
|
566
|
+
end
|
547
567
|
say "All gems up to date"
|
548
568
|
end
|
549
569
|
|
570
|
+
def do_rubygems_update
|
571
|
+
# Need to clear out the argument list because the
|
572
|
+
# update_rubygems script expects to handle command line
|
573
|
+
# argument.
|
574
|
+
ARGV.clear
|
575
|
+
require_gem 'rubygems-update'
|
576
|
+
load 'update_rubygems'
|
577
|
+
end
|
578
|
+
|
579
|
+
def which_to_update(highest_installed_gems, remote_gemspecs)
|
580
|
+
result = []
|
581
|
+
highest_installed_gems.each do |l_name, l_spec|
|
582
|
+
highest_remote_gem =
|
583
|
+
remote_gemspecs.select { |spec| spec.name == l_name }.
|
584
|
+
sort_by { |spec| spec.version }.
|
585
|
+
last
|
586
|
+
if highest_remote_gem and l_spec.version < highest_remote_gem.version
|
587
|
+
result << l_name
|
588
|
+
end
|
589
|
+
end
|
590
|
+
result
|
591
|
+
end
|
592
|
+
|
550
593
|
def command_manager
|
551
594
|
Gem::CommandManager.instance
|
552
595
|
end
|
data/lib/rubygems/installer.rb
CHANGED
@@ -144,24 +144,35 @@ module Gem
|
|
144
144
|
raise Gem::FilePermissionError.new(bindir) unless File.writable?(bindir)
|
145
145
|
spec.executables.each do |filename|
|
146
146
|
File.open(File.join(bindir, File.basename(filename)), "w", 0755) do |file|
|
147
|
-
file.print(app_script_text(spec
|
147
|
+
file.print(app_script_text(spec, install_dir, filename))
|
148
148
|
end
|
149
149
|
generate_windows_script(bindir, filename)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
154
|
+
def shebang(spec, install_dir, file_name)
|
155
|
+
first_line = ""
|
156
|
+
File.open(File.join(install_dir, "gems", spec.full_name, spec.bindir,file_name), "rb") do |file|
|
157
|
+
first_line = file.readlines("\n").first
|
158
|
+
end
|
159
|
+
if first_line =~ /^#!/ then
|
160
|
+
first_line.sub(/\A\#!\s*\S*ruby\S*/, "#!" + File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])) #Thanks RPA
|
161
|
+
else
|
162
|
+
File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
154
166
|
##
|
155
167
|
# Returns the text for an application file.
|
156
168
|
#
|
157
|
-
def app_script_text(
|
169
|
+
def app_script_text(spec, install_dir, filename)
|
158
170
|
text = <<-TEXT
|
159
|
-
|
160
|
-
|
171
|
+
#{shebang(spec, install_dir, filename)}
|
161
172
|
#
|
162
173
|
# This file was generated by RubyGems.
|
163
174
|
#
|
164
|
-
# The application '#{name}' is installed as part of a gem, and
|
175
|
+
# The application '#{spec.name}' is installed as part of a gem, and
|
165
176
|
# this file is here to facilitate running it.
|
166
177
|
#
|
167
178
|
|
@@ -173,7 +184,7 @@ if ARGV.size > 0 && ARGV[0][0]==95 && ARGV[0][-1]==95
|
|
173
184
|
ARGV.shift
|
174
185
|
end
|
175
186
|
end
|
176
|
-
require_gem '#{name}', version
|
187
|
+
require_gem '#{spec.name}', version
|
177
188
|
load '#{filename}'
|
178
189
|
TEXT
|
179
190
|
text
|
@@ -170,7 +170,7 @@ module Gem
|
|
170
170
|
def write_cache
|
171
171
|
data = cache_data
|
172
172
|
open(writable_file, "w") do |f|
|
173
|
-
f.puts data
|
173
|
+
f.puts Marshal.dump(data)
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
@@ -206,7 +206,17 @@ module Gem
|
|
206
206
|
# Read the most current cache data.
|
207
207
|
def read_cache
|
208
208
|
@cache_file = select_cache_file
|
209
|
-
|
209
|
+
begin
|
210
|
+
open(@cache_file) { |f| load_local_cache(f) } || {}
|
211
|
+
rescue StandardError => ex
|
212
|
+
{}
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
def load_local_cache(f)
|
217
|
+
Marshal.load(f)
|
218
|
+
rescue StandardError => ex
|
219
|
+
{}
|
210
220
|
end
|
211
221
|
|
212
222
|
# Select a writable cache file
|
@@ -334,7 +344,7 @@ module Gem
|
|
334
344
|
when nil
|
335
345
|
true
|
336
346
|
else
|
337
|
-
http_proxy.to_str
|
347
|
+
@options[:http_proxy].to_str
|
338
348
|
end
|
339
349
|
@fetcher_class = CachedFetcher
|
340
350
|
end
|
@@ -414,7 +424,7 @@ module Gem
|
|
414
424
|
specs_n_sources = []
|
415
425
|
caches.each do |source, cache|
|
416
426
|
cache.each do |name, spec|
|
417
|
-
if (
|
427
|
+
if (/^#{gem_name}-/i === name &&
|
418
428
|
version_requirement.satisfied_by?(spec.version))
|
419
429
|
specs_n_sources << [spec, source]
|
420
430
|
end
|
data/lib/rubygems/validator.rb
CHANGED
data/test/gemutilities.rb
CHANGED
@@ -11,7 +11,7 @@ module Utilities
|
|
11
11
|
def make_cache_area(path, *uris)
|
12
12
|
make_gemhome(path)
|
13
13
|
fn = File.join(path, 'source_cache')
|
14
|
-
open(fn, 'w') do |f| f.write cache_hash(*uris)
|
14
|
+
open(fn, 'w') do |f| f.write Marshal.dump(cache_hash(*uris)) end
|
15
15
|
end
|
16
16
|
|
17
17
|
extend self
|
data/test/test_local_cache.rb
CHANGED
@@ -138,7 +138,7 @@ class TestLocalCache < Test::Unit::TestCase
|
|
138
138
|
[lc.user_cache_file, 'usr'],
|
139
139
|
].each do |fn, data|
|
140
140
|
FileUtils.mkdir_p File.dirname(fn)
|
141
|
-
open(fn, "w") { |f| f.puts({'key' => data}
|
141
|
+
open(fn, "w") { |f| f.puts(Marshal.dump({'key' => data})) }
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
@@ -150,7 +150,7 @@ class TestLocalCache < Test::Unit::TestCase
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def read_cache(fn)
|
153
|
-
open(fn) { |f|
|
153
|
+
open(fn) { |f| Marshal.load(f) }
|
154
154
|
end
|
155
155
|
|
156
156
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.
|
2
|
+
rubygems_version: 0.8.4.1
|
3
3
|
specification_version: 1
|
4
4
|
name: rubygems-update
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.8.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.8.5
|
7
|
+
date: 2005-02-26
|
8
8
|
summary: RubyGems Update GEM
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -41,17 +41,17 @@ files:
|
|
41
41
|
- doc/doc.css
|
42
42
|
- doc/makedoc.rb
|
43
43
|
- examples/application
|
44
|
-
- examples/application/an-app.gemspec
|
45
44
|
- examples/application/bin
|
46
45
|
- examples/application/lib
|
46
|
+
- examples/application/an-app.gemspec
|
47
47
|
- examples/application/bin/myapp
|
48
48
|
- examples/application/lib/somefunctionality.rb
|
49
|
+
- gemspecs/ook.gemspec
|
50
|
+
- gemspecs/README
|
49
51
|
- gemspecs/cgikit-1.1.0.gemspec
|
50
52
|
- gemspecs/jabber4r.gemspec
|
51
53
|
- gemspecs/linguistics.gemspec
|
52
|
-
- gemspecs/ook.gemspec
|
53
54
|
- gemspecs/progressbar.gemspec
|
54
|
-
- gemspecs/README
|
55
55
|
- gemspecs/redcloth.gemspec
|
56
56
|
- gemspecs/rublog.gemspec
|
57
57
|
- gemspecs/ruby-doom.gemspec
|
@@ -60,13 +60,12 @@ files:
|
|
60
60
|
- lib/rubygems.rb
|
61
61
|
- lib/ubygems.rb
|
62
62
|
- lib/rubygems/builder.rb
|
63
|
-
- lib/rubygems/cmd_manager.rb
|
64
63
|
- lib/rubygems/command.rb
|
65
64
|
- lib/rubygems/config_file.rb
|
66
65
|
- lib/rubygems/custom_require.rb
|
67
66
|
- lib/rubygems/doc_manager.rb
|
68
67
|
- lib/rubygems/format.rb
|
69
|
-
- lib/rubygems/
|
68
|
+
- lib/rubygems/cmd_manager.rb
|
70
69
|
- lib/rubygems/gem_runner.rb
|
71
70
|
- lib/rubygems/installer.rb
|
72
71
|
- lib/rubygems/loadpath_manager.rb
|
@@ -81,6 +80,7 @@ files:
|
|
81
80
|
- lib/rubygems/user_interaction.rb
|
82
81
|
- lib/rubygems/validator.rb
|
83
82
|
- lib/rubygems/version.rb
|
83
|
+
- lib/rubygems/gem_commands.rb
|
84
84
|
- pkgs/sources
|
85
85
|
- pkgs/sources/lib
|
86
86
|
- pkgs/sources/sources.gemspec
|
@@ -90,13 +90,13 @@ files:
|
|
90
90
|
- scripts/gemdoc.rb
|
91
91
|
- scripts/runtest.rb
|
92
92
|
- scripts/specdoc.rb
|
93
|
-
- test/bogussources.rb
|
94
93
|
- test/data
|
94
|
+
- test/mock
|
95
|
+
- test/bogussources.rb
|
95
96
|
- test/functional.rb
|
96
97
|
- test/gemenvironment.rb
|
97
98
|
- test/gemutilities.rb
|
98
99
|
- test/insure_session.rb
|
99
|
-
- test/mock
|
100
100
|
- test/mockgemui.rb
|
101
101
|
- test/onegem.rb
|
102
102
|
- test/simple_gem.rb
|
@@ -122,48 +122,18 @@ files:
|
|
122
122
|
- test/testgem.rc
|
123
123
|
- test/user_capture.rb
|
124
124
|
- test/yaml_data.rb
|
125
|
-
- test/data/a-0.0.1.gem
|
126
|
-
- test/data/a-0.0.2.gem
|
127
|
-
- test/data/b-0.0.2.gem
|
128
|
-
- test/data/c-1.2.gem
|
129
|
-
- test/data/gemhome
|
130
125
|
- test/data/gems
|
126
|
+
- test/data/one
|
131
127
|
- test/data/legacy
|
132
128
|
- test/data/lib
|
133
|
-
- test/data/one
|
134
|
-
- test/data/gemhome/cache
|
135
|
-
- test/data/gemhome/doc
|
136
|
-
- test/data/gemhome/gems
|
137
|
-
- test/data/gemhome/specifications
|
138
|
-
- test/data/gemhome/cache/a-0.0.1.gem
|
139
|
-
- test/data/gemhome/cache/a-0.0.2.gem
|
140
|
-
- test/data/gemhome/cache/b-0.0.2.gem
|
141
|
-
- test/data/gemhome/cache/c-1.2.gem
|
142
|
-
- test/data/gemhome/gems/a-0.0.1
|
143
|
-
- test/data/gemhome/gems/a-0.0.2
|
144
|
-
- test/data/gemhome/gems/b-0.0.2
|
145
|
-
- test/data/gemhome/gems/c-1.2
|
146
|
-
- test/data/gemhome/gems/a-0.0.1/lib
|
147
|
-
- test/data/gemhome/gems/a-0.0.1/lib/code.rb
|
148
|
-
- test/data/gemhome/gems/a-0.0.2/lib
|
149
|
-
- test/data/gemhome/gems/a-0.0.2/lib/code.rb
|
150
|
-
- test/data/gemhome/gems/b-0.0.2/lib
|
151
|
-
- test/data/gemhome/gems/b-0.0.2/lib/code.rb
|
152
|
-
- test/data/gemhome/gems/c-1.2/lib
|
153
|
-
- test/data/gemhome/gems/c-1.2/lib/code.rb
|
154
|
-
- test/data/gemhome/specifications/a-0.0.1.gemspec
|
155
|
-
- test/data/gemhome/specifications/a-0.0.2.gemspec
|
156
|
-
- test/data/gemhome/specifications/b-0.0.2.gemspec
|
157
|
-
- test/data/gemhome/specifications/c-1.2.gemspec
|
158
|
-
- test/data/legacy/keyedlist-0.4.0.ruby
|
159
|
-
- test/data/legacy/keyedlist-0.4.0.yaml
|
160
|
-
- test/data/lib/code.rb
|
161
129
|
- test/data/one/lib
|
162
|
-
- test/data/one/one
|
130
|
+
- test/data/one/README.one
|
163
131
|
- test/data/one/one.gemspec
|
164
132
|
- test/data/one/one.yaml
|
165
|
-
- test/data/one/README.one
|
166
133
|
- test/data/one/lib/one.rb
|
134
|
+
- test/data/legacy/keyedlist-0.4.0.ruby
|
135
|
+
- test/data/legacy/keyedlist-0.4.0.yaml
|
136
|
+
- test/data/lib/code.rb
|
167
137
|
- test/mock/gems
|
168
138
|
- test/mock/gems/cache
|
169
139
|
- test/mock/gems/doc
|
data/test/data/a-0.0.1.gem
DELETED
Binary file
|
data/test/data/a-0.0.2.gem
DELETED
Binary file
|
data/test/data/b-0.0.2.gem
DELETED
Binary file
|
data/test/data/c-1.2.gem
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
CODE = 1
|
@@ -1 +0,0 @@
|
|
1
|
-
CODE = 1
|
@@ -1 +0,0 @@
|
|
1
|
-
CODE = 1
|
@@ -1 +0,0 @@
|
|
1
|
-
CODE = 1
|
data/test/data/one/one-0.0.1.gem
DELETED
Binary file
|