Class: Captain::Remote
- Inherits:
-
Object
show all
- Includes:
- Enumerable
- Defined in:
- lib/captain/remote.rb
Defined Under Namespace
Modules: Adapter, Cache, Verifier
Classes: ProgressMeter, Stream
Class Method Summary
collapse
-
.component_file(mirror, codename, component, architecture, *rest) ⇒ Object
-
.component_uri(mirror, codename, component, architecture, *rest) ⇒ Object
-
.installer_file(mirror, codename, architecture, *rest) ⇒ Object
-
.installer_uri(mirror, codename, architecture, *rest) ⇒ Object
-
.package_file(mirror, filename, md5sum) ⇒ Object
-
.release_file(mirror, codename) ⇒ Object
Instance Method Summary
collapse
Constructor Details
#initialize(uri, verifier = Verifier::Content.new) ⇒ Remote
Returns a new instance of Remote.
42
43
44
45
46
|
# File 'lib/captain/remote.rb', line 42
def initialize(uri, verifier=Verifier::Content.new)
@uri = URI.parse(uri)
@verifier = verifier
@cache = Cache::Persistent.new
end
|
Class Method Details
.component_file(mirror, codename, component, architecture, *rest) ⇒ Object
14
15
16
17
18
19
|
# File 'lib/captain/remote.rb', line 14
def self.component_file(mirror, codename, component, architecture, *rest)
uri = component_uri(mirror, codename, component, architecture, *rest)
path = [component, "binary-#{architecture}", *rest].join('/')
md5sum = release_file(mirror, codename).grep(%r{^ \w{32}\s+\d+\s+#{path}}).first.split(' ').first
new(uri, Verifier::MD5.new(md5sum))
end
|
.component_uri(mirror, codename, component, architecture, *rest) ⇒ Object
32
33
34
|
# File 'lib/captain/remote.rb', line 32
def self.component_uri(mirror, codename, component, architecture, *rest)
["#{mirror}/dists/#{codename}/#{component}/binary-#{architecture}", *rest].join('/')
end
|
.installer_file(mirror, codename, architecture, *rest) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/captain/remote.rb', line 21
def self.installer_file(mirror, codename, architecture, *rest)
uri = installer_uri(mirror, codename, architecture, *rest)
md5sum_uri = installer_uri(mirror, codename, architecture, 'MD5SUMS')
md5sum = new(md5sum_uri).grep(%r{#{rest.join('/')}}).first.split(' ').first
new(uri, Verifier::MD5.new(md5sum))
end
|
.installer_uri(mirror, codename, architecture, *rest) ⇒ Object
36
37
38
|
# File 'lib/captain/remote.rb', line 36
def self.installer_uri(mirror, codename, architecture, *rest)
["#{mirror}/dists/#{codename}/main/installer-#{architecture}/current/images", *rest].join('/')
end
|
.package_file(mirror, filename, md5sum) ⇒ Object
28
29
30
|
# File 'lib/captain/remote.rb', line 28
def self.package_file(mirror, filename, md5sum)
new("#{mirror}/#{filename}", Verifier::MD5.new(md5sum))
end
|
.release_file(mirror, codename) ⇒ Object
9
10
11
12
|
# File 'lib/captain/remote.rb', line 9
def self.release_file(mirror, codename)
new("#{mirror}/dists/#{codename}/Release")
end
|
Instance Method Details
#copy_to(*paths) ⇒ Object
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/captain/remote.rb', line 48
def copy_to(*paths)
path = Pathname.new(File.join(paths))
path.dirname.mkpath
open_stream do |stream|
File.open(path, 'w') do |file|
Stream.copy(stream, file)
end
end
end
|
#each_line ⇒ Object
Also known as:
each
59
60
61
62
63
64
65
|
# File 'lib/captain/remote.rb', line 59
def each_line
open_stream do |stream|
stream.each_line do |line|
yield line
end
end
end
|
#gunzipped ⇒ Object
68
69
70
|
# File 'lib/captain/remote.rb', line 68
def gunzipped
Adapter::Gunzip.new(self)
end
|