forked from benhoskings/babushka-deps
/
rvm.rb
71 lines (66 loc) · 1.93 KB
/
rvm.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
meta :rvm do
def rvm args
shell "~/.rvm/bin/rvm #{args}", :log => args['install']
end
end
dep '1.9.2.rvm' do
requires '1.9.2 installed.rvm'
met? { login_shell('ruby --version')['ruby 1.9.2p0'] }
meet { rvm('use 1.9.2 --default') }
end
dep '1.9.2 installed.rvm' do
requires 'rvm'
met? { rvm('list')['ruby-1.9.2-p0'] }
meet { log("rvm install 1.9.2") { rvm 'install 1.9.2'} }
end
dep 'rvm' do
met? { raw_which 'rvm', login_shell('which rvm') }
meet {
if confirm(:install_rvm_system_wide, :default => 'n')
log_shell "Installing rvm using rvm-install-system-wide", 'bash < <( curl -L http://bit.ly/rvm-install-system-wide )'
else
log_shell "Installing rvm using rvm-install-head", 'bash -c "`curl http://rvm.beginrescueend.com/releases/rvm-install-head`"'
end
}
end
meta :rvm_mirror do
def urls
shell("grep '_url=' ~/.rvm/config/db").split("\n").reject {|l|
l['_repo_url']
}.map {|l|
l.sub(/^.*_url=/, '')
}
end
template {
requires 'rvm'
}
end
dep 'mirrored.rvm_mirror' do
define_var :rvm_vhost_root, :default => '/srv/http/rvm'
def missing_urls
urls.tap {|urls| log "#{urls.length} URLs in the rvm database." }.reject {|url|
path = var(:rvm_vhost_root) / url.sub(/^[a-z]+:\/\/[^\/]+\//, '')
path.exists? && !path.empty?
}.tap {|urls| log "Of those, #{urls.length} aren't present locally." }
end
met? { missing_urls.empty? }
meet {
missing_urls.each {|url|
cd(var(:rvm_vhost_root) / File.dirname(url.sub(/^[a-z]+:\/\/[^\/]+\//, '')), :create => true) do
# begin
Babushka::Resource.download url
# rescue StandardError => ex
# log_error ex.inspect
# end
end
}
}
after {
log urls.map {|url|
url.scan(/^[a-z]+:\/\/([^\/]+)\//).flatten.first
}.uniq.reject {|url|
url[/[:]/]
}.join(' ')
log "Those are the domains you should point at #{var(:rvm_vhost_root)}."
}
end