rubygems-update 0.8.4 → 0.8.5
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.
- 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
|