roll 1.1.0 → 1.2.0
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.
- data/HISTORY +28 -4
- data/PACKAGE +6 -0
- data/PROFILE +22 -0
- data/README.rdoc +66 -59
- data/bin/roll +7 -1
- data/lib/oll.rb +1 -1
- data/lib/roll.rb +30 -9
- data/lib/roll/command.rb +40 -177
- data/lib/roll/commands/env.rb +24 -0
- data/lib/roll/commands/help.rb +30 -0
- data/lib/roll/commands/in.rb +26 -0
- data/lib/roll/commands/index.rb +20 -0
- data/lib/roll/commands/list.rb +33 -0
- data/lib/roll/commands/out.rb +22 -0
- data/lib/roll/commands/path.rb +50 -0
- data/lib/roll/commands/sync.rb +29 -0
- data/lib/roll/commands/use.rb +25 -0
- data/lib/roll/commands/verify.rb +22 -0
- data/lib/roll/config.rb +8 -3
- data/lib/roll/environment.rb +84 -42
- data/lib/roll/kernel.rb +9 -2
- data/lib/roll/library.rb +360 -21
- data/lib/roll/metadata.rb +282 -51
- data/lib/roll/original.rb +3 -3
- data/lib/roll/version.rb +6 -7
- data/script/setup +14 -18
- data/script/setup.old +1344 -0
- data/test/{unitcases/version_case.rb → version_case.rb} +1 -1
- metadata +30 -47
- data/TODO +0 -4
- data/lib/roll/errors.rb +0 -13
- data/lib/roll/ledger.rb +0 -299
- data/lib/roll/locals.rb +0 -96
- data/meta/active +0 -1
- data/meta/authors +0 -1
- data/meta/contact +0 -1
- data/meta/created +0 -1
- data/meta/description +0 -5
- data/meta/homepage +0 -1
- data/meta/maintainer +0 -1
- data/meta/name +0 -1
- data/meta/repository +0 -1
- data/meta/ruby +0 -2
- data/meta/suite +0 -1
- data/meta/summary +0 -1
- data/meta/version +0 -1
- data/script/test +0 -23
- data/test/benchmarks/vsgems.rb +0 -11
- data/test/benchmarks/vsgems_bm.rb +0 -17
- data/test/demonstrations/01_library.rdoc +0 -33
- data/test/demonstrations/04_version.rdoc +0 -56
- data/test/fixtures/env.list +0 -1
- data/test/fixtures/inspect.rb +0 -12
- data/test/fixtures/tryme/1.0/lib/tryme.rb +0 -1
- data/test/fixtures/tryme/1.0/meta/homepage +0 -1
- data/test/fixtures/tryme/1.0/meta/name +0 -1
- data/test/fixtures/tryme/1.0/meta/version +0 -1
- data/test/fixtures/tryme/1.1/lib/tryme.rb +0 -1
- data/test/fixtures/tryme/1.1/meta/homepage +0 -1
- data/test/fixtures/tryme/1.1/meta/name +0 -1
- data/test/fixtures/tryme/1.1/meta/version +0 -1
- data/test/unit/version_test.rb +0 -71
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 1
|
7
|
-
-
|
8
|
+
- 2
|
8
9
|
- 0
|
9
|
-
version: 1.
|
10
|
+
version: 1.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Thomas Sawyer
|
@@ -14,70 +15,46 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-15 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
|
-
description:
|
22
|
-
Roll is a library manager for Ruby. Code repositories
|
23
|
-
can be made visible to Ruby just by setting an
|
24
|
-
environment variable. Rolls effectively trivializes
|
25
|
-
Ruby package management.
|
22
|
+
description: Roll is a library manager for Ruby. Code repositories can be made visible to Ruby just by setting an environment variable. Rolls effectively trivializes Ruby package management.
|
26
23
|
email: transfire@gmail.com
|
27
24
|
executables:
|
28
25
|
- roll
|
29
26
|
extensions: []
|
30
27
|
|
31
|
-
extra_rdoc_files:
|
32
|
-
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README.rdoc
|
33
30
|
files:
|
34
31
|
- bin/roll
|
35
32
|
- lib/oll.rb
|
36
33
|
- lib/roll/command.rb
|
34
|
+
- lib/roll/commands/env.rb
|
35
|
+
- lib/roll/commands/help.rb
|
36
|
+
- lib/roll/commands/in.rb
|
37
|
+
- lib/roll/commands/index.rb
|
38
|
+
- lib/roll/commands/list.rb
|
39
|
+
- lib/roll/commands/out.rb
|
40
|
+
- lib/roll/commands/path.rb
|
41
|
+
- lib/roll/commands/sync.rb
|
42
|
+
- lib/roll/commands/use.rb
|
43
|
+
- lib/roll/commands/verify.rb
|
37
44
|
- lib/roll/config.rb
|
38
45
|
- lib/roll/environment.rb
|
39
|
-
- lib/roll/errors.rb
|
40
46
|
- lib/roll/kernel.rb
|
41
|
-
- lib/roll/ledger.rb
|
42
47
|
- lib/roll/library.rb
|
43
|
-
- lib/roll/locals.rb
|
44
48
|
- lib/roll/metadata.rb
|
45
49
|
- lib/roll/original.rb
|
46
50
|
- lib/roll/version.rb
|
47
51
|
- lib/roll.rb
|
48
|
-
- meta/active
|
49
|
-
- meta/authors
|
50
|
-
- meta/contact
|
51
|
-
- meta/created
|
52
|
-
- meta/description
|
53
|
-
- meta/homepage
|
54
|
-
- meta/maintainer
|
55
|
-
- meta/name
|
56
|
-
- meta/repository
|
57
|
-
- meta/ruby
|
58
|
-
- meta/suite
|
59
|
-
- meta/summary
|
60
|
-
- meta/version
|
61
52
|
- script/rdoc
|
62
53
|
- script/setup
|
63
|
-
- script/
|
64
|
-
- test/
|
65
|
-
-
|
66
|
-
-
|
67
|
-
- test/demonstrations/04_version.rdoc
|
68
|
-
- test/fixtures/env.list
|
69
|
-
- test/fixtures/inspect.rb
|
70
|
-
- test/fixtures/tryme/1.0/lib/tryme.rb
|
71
|
-
- test/fixtures/tryme/1.0/meta/homepage
|
72
|
-
- test/fixtures/tryme/1.0/meta/name
|
73
|
-
- test/fixtures/tryme/1.0/meta/version
|
74
|
-
- test/fixtures/tryme/1.1/lib/tryme.rb
|
75
|
-
- test/fixtures/tryme/1.1/meta/homepage
|
76
|
-
- test/fixtures/tryme/1.1/meta/name
|
77
|
-
- test/fixtures/tryme/1.1/meta/version
|
78
|
-
- test/unit/version_test.rb
|
79
|
-
- test/unitcases/version_case.rb
|
80
|
-
- TODO
|
54
|
+
- script/setup.old
|
55
|
+
- test/version_case.rb
|
56
|
+
- PROFILE
|
57
|
+
- PACKAGE
|
81
58
|
- README.rdoc
|
82
59
|
- HISTORY
|
83
60
|
- COPYING
|
@@ -89,28 +66,34 @@ post_install_message:
|
|
89
66
|
rdoc_options:
|
90
67
|
- --title
|
91
68
|
- Roll API
|
69
|
+
- --main
|
70
|
+
- README.rdoc
|
92
71
|
require_paths:
|
93
72
|
- lib
|
94
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
95
75
|
requirements:
|
96
76
|
- - ">="
|
97
77
|
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
98
79
|
segments:
|
99
80
|
- 0
|
100
81
|
version: "0"
|
101
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
102
84
|
requirements:
|
103
85
|
- - ">="
|
104
86
|
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
105
88
|
segments:
|
106
89
|
- 0
|
107
90
|
version: "0"
|
108
91
|
requirements: []
|
109
92
|
|
110
93
|
rubyforge_project: roll
|
111
|
-
rubygems_version: 1.3.
|
94
|
+
rubygems_version: 1.3.7
|
112
95
|
signing_key:
|
113
96
|
specification_version: 3
|
114
97
|
summary: Ruby Object-Oriented Library Ledger
|
115
|
-
test_files:
|
116
|
-
|
98
|
+
test_files: []
|
99
|
+
|
data/TODO
DELETED
data/lib/roll/errors.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Roll
|
2
|
-
|
3
|
-
# VersionError is raised when a requested version cannot be found.
|
4
|
-
class VersionError < ::RangeError # :nodoc:
|
5
|
-
end
|
6
|
-
|
7
|
-
# VersionConflict is raised when selecting another version
|
8
|
-
# of a library when a previous version has already been selected.
|
9
|
-
class VersionConflict < ::LoadError # :nodoc:
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
data/lib/roll/ledger.rb
DELETED
@@ -1,299 +0,0 @@
|
|
1
|
-
module Roll
|
2
|
-
require 'roll/original'
|
3
|
-
require 'roll/environment'
|
4
|
-
require 'roll/library'
|
5
|
-
|
6
|
-
# = Ledger class
|
7
|
-
#
|
8
|
-
class Ledger
|
9
|
-
|
10
|
-
include Enumerable
|
11
|
-
|
12
|
-
#
|
13
|
-
def initialize
|
14
|
-
@index = Hash.new{|h,k| h[k] = []}
|
15
|
-
|
16
|
-
@environment = Environment.new
|
17
|
-
|
18
|
-
@environment.each do |name, paths|
|
19
|
-
paths.each do |path|
|
20
|
-
unless File.directory?(path)
|
21
|
-
warn "roll: invalid path for #{name} -- #{path}"
|
22
|
-
next
|
23
|
-
end
|
24
|
-
lib = Library.new(path, name)
|
25
|
-
@index[name] << lib if lib.active?
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
@load_stack = []
|
30
|
-
@load_monitor = Hash.new{ |h,k| h[k]=[] }
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
def enironment
|
35
|
-
@environment
|
36
|
-
end
|
37
|
-
|
38
|
-
#
|
39
|
-
def [](name)
|
40
|
-
@index[name]
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
def []=(name, value)
|
45
|
-
@index[name] = value
|
46
|
-
end
|
47
|
-
|
48
|
-
#
|
49
|
-
def include?(name)
|
50
|
-
@index.include?(name)
|
51
|
-
end
|
52
|
-
|
53
|
-
#
|
54
|
-
def names
|
55
|
-
@index.keys
|
56
|
-
end
|
57
|
-
|
58
|
-
#
|
59
|
-
def each(&block)
|
60
|
-
@index.each(&block)
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
def size
|
65
|
-
@index.size
|
66
|
-
end
|
67
|
-
|
68
|
-
#
|
69
|
-
def load_stack
|
70
|
-
@load_stack
|
71
|
-
end
|
72
|
-
|
73
|
-
# NOTE: Not used yet.
|
74
|
-
def load_monitor
|
75
|
-
@load_monitor
|
76
|
-
end
|
77
|
-
|
78
|
-
#--
|
79
|
-
# TODO: Should Ruby's underlying require be tried first,
|
80
|
-
# then fallback to Rolls. Or vice-versa?
|
81
|
-
#++
|
82
|
-
|
83
|
-
#
|
84
|
-
def require(path)
|
85
|
-
#begin
|
86
|
-
# original_require(path)
|
87
|
-
#rescue LoadError => load_error
|
88
|
-
# lib, file = *match(path)
|
89
|
-
# if lib && file
|
90
|
-
# constrain(lib)
|
91
|
-
# lib.require_absolute(file)
|
92
|
-
# else
|
93
|
-
# raise clean_backtrace(load_error)
|
94
|
-
# end
|
95
|
-
#end
|
96
|
-
lib, file = *match(path)
|
97
|
-
if lib && file
|
98
|
-
constrain(lib)
|
99
|
-
lib.require_absolute(file)
|
100
|
-
else
|
101
|
-
begin
|
102
|
-
original_require(path)
|
103
|
-
rescue LoadError => load_error
|
104
|
-
raise clean_backtrace(load_error)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
#
|
111
|
-
def load(path, wrap=nil)
|
112
|
-
lib, file = *match(path, false)
|
113
|
-
if lib && file
|
114
|
-
constrain(lib)
|
115
|
-
lib.load_absolute(file, wrap)
|
116
|
-
else
|
117
|
-
begin
|
118
|
-
original_load(path, wrap)
|
119
|
-
rescue LoadError => load_error
|
120
|
-
raise clean_backtrace(load_error)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
# Use acquire to use Roll-style loading. This first
|
126
|
-
# looks for a specific library via ':'. If ':' is
|
127
|
-
# not present it then tries the current library.
|
128
|
-
# Failing that it fallsback to Ruby itself.
|
129
|
-
#
|
130
|
-
# acquire('facets:string/margin')
|
131
|
-
#
|
132
|
-
# To "load" the library, rather than "require" it set
|
133
|
-
# the +:load+ option to true.
|
134
|
-
#
|
135
|
-
# acquire('facets:string/margin', :load=>true)
|
136
|
-
#
|
137
|
-
def acquire(file, opts={})
|
138
|
-
if file.index(':') # a specific library
|
139
|
-
name, file = file.split(':')
|
140
|
-
lib = Library.open(name)
|
141
|
-
else # try the current library
|
142
|
-
cur = load_stack.last
|
143
|
-
if cur && cur.include?(file)
|
144
|
-
lib = cur
|
145
|
-
elsif !file.index('/') # is this a library name?
|
146
|
-
if cur = Library.instance(file)
|
147
|
-
lib = cur
|
148
|
-
file = lib.default # default file to load
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
if opts[:load]
|
153
|
-
lib ? lib.load(file) : original_load(file)
|
154
|
-
else
|
155
|
-
lib ? lib.require(file) : original_require(file)
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
#
|
160
|
-
def constrain(lib)
|
161
|
-
cmp = self[lib.name]
|
162
|
-
if Array === cmp
|
163
|
-
self[lib.name] = lib
|
164
|
-
else
|
165
|
-
if lib.version != cmp.version
|
166
|
-
raise VersionError
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
private
|
172
|
-
|
173
|
-
# Find require matches.
|
174
|
-
def match(path, suffix=true)
|
175
|
-
path = path.to_s
|
176
|
-
|
177
|
-
return nil if /^\// =~ path # absolute path
|
178
|
-
|
179
|
-
if path.index(':') # a specified library
|
180
|
-
name, path = path.split(':')
|
181
|
-
lib = Library.open(name)
|
182
|
-
if lib.active?
|
183
|
-
file = lib.find(path, suffix)
|
184
|
-
return lib, file
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
matches = []
|
189
|
-
|
190
|
-
# try the load stack first
|
191
|
-
load_stack.reverse_each do |lib|
|
192
|
-
if file = lib.find(path, suffix)
|
193
|
-
return [lib, file] unless $VERBOSE
|
194
|
-
matches << [lib, file]
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
# TODO: Perhaps the selected and unselected should be kept in separate lists?
|
199
|
-
unselected, selected = *@index.partition{ |name, libs| Array === libs }
|
200
|
-
|
201
|
-
selected.each do |(name, lib)|
|
202
|
-
if file = lib.find(path, suffix)
|
203
|
-
#matches << [lib, file]
|
204
|
-
#return matches.first unless $VERBOSE
|
205
|
-
return [lib, file] unless $VERBOSE
|
206
|
-
matches << [lib, file]
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
unselected.each do |(name, libs)|
|
211
|
-
pos = []
|
212
|
-
libs.each do |lib|
|
213
|
-
if file = lib.find(path, suffix)
|
214
|
-
pos << [lib, file]
|
215
|
-
end
|
216
|
-
end
|
217
|
-
unless pos.empty?
|
218
|
-
latest = pos.sort{ |a,b| b[0].version <=> a[0].version }.first
|
219
|
-
return latest unless $VERBOSE
|
220
|
-
matches << latest
|
221
|
-
#return matches.first unless $VERBOSE
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
matches.uniq!
|
226
|
-
|
227
|
-
if matches.size > 1
|
228
|
-
warn_multiples(path, matches)
|
229
|
-
end
|
230
|
-
|
231
|
-
matches.first
|
232
|
-
end
|
233
|
-
|
234
|
-
#
|
235
|
-
def warn_multiples(path, matches)
|
236
|
-
warn "multiple matches for same request -- #{path}"
|
237
|
-
matches.each do |lib, file|
|
238
|
-
warn " #{file}"
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
#
|
243
|
-
def clean_backtrace(error)
|
244
|
-
if $DEBUG
|
245
|
-
error
|
246
|
-
else
|
247
|
-
bt = error.backtrace
|
248
|
-
bt = bt.reject{ |e| /roll/ =~ e }
|
249
|
-
error.set_backtrace(bt)
|
250
|
-
error
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
|
-
end#class Ledger
|
255
|
-
|
256
|
-
#--
|
257
|
-
# Ledger augments the Library metaclass.
|
258
|
-
#++
|
259
|
-
class << Library
|
260
|
-
|
261
|
-
#
|
262
|
-
def ledger
|
263
|
-
@ledger ||= Ledger.new
|
264
|
-
end
|
265
|
-
|
266
|
-
# Current environment
|
267
|
-
def environment
|
268
|
-
ledger.environment
|
269
|
-
end
|
270
|
-
|
271
|
-
# List of library names.
|
272
|
-
def list
|
273
|
-
ledger.names
|
274
|
-
end
|
275
|
-
|
276
|
-
#
|
277
|
-
def require(path)
|
278
|
-
ledger.require(path)
|
279
|
-
end
|
280
|
-
|
281
|
-
#
|
282
|
-
def load(path, wrap=nil)
|
283
|
-
ledger.load(path, wrap)
|
284
|
-
end
|
285
|
-
|
286
|
-
#
|
287
|
-
def load_stack
|
288
|
-
ledger.load_stack
|
289
|
-
end
|
290
|
-
|
291
|
-
# NOTE: Not used yet.
|
292
|
-
def load_monitor
|
293
|
-
ledger.load_monitor
|
294
|
-
end
|
295
|
-
|
296
|
-
end
|
297
|
-
|
298
|
-
end#module Roll
|
299
|
-
|