devstructure 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/devstructure/blueprint.rb +33 -46
- data/lib/devstructure/puppet.rb +14 -4
- metadata +4 -4
@@ -59,27 +59,10 @@ class DevStructure::Blueprint < Hash
|
|
59
59
|
)
|
60
60
|
|
61
61
|
# Second pass removes managers that manage no packages.
|
62
|
-
# For RubyGems we have to dig a little deeper to see what is managed
|
63
|
-
# by rubygems-update.
|
64
62
|
b.walk(
|
65
63
|
:package => lambda { |manager, command, package, version|
|
66
64
|
return unless b.packages[package]
|
67
|
-
test = if package =~ /^rubygems(\d+\.\d+(?:\.\d+)?)$/
|
68
|
-
b.packages["rubygems-update"]
|
69
|
-
else
|
70
|
-
b.packages[package]
|
71
|
-
end
|
72
|
-
if test
|
73
|
-
case test["_packages"].length
|
74
|
-
when 0
|
75
|
-
when 1
|
76
|
-
return unless test["_packages"]["rubygems-update"]
|
77
|
-
else
|
78
|
-
return
|
79
|
-
end
|
80
|
-
end
|
81
65
|
p = b.packages[manager]["_packages"]
|
82
|
-
p.delete package
|
83
66
|
b.packages.delete manager if 0 == p.length
|
84
67
|
}
|
85
68
|
)
|
@@ -130,8 +113,10 @@ EOF
|
|
130
113
|
:package => lambda { |manager, command, package, version|
|
131
114
|
return if manager == package
|
132
115
|
printf "#{command}\n", package, version
|
133
|
-
if "
|
134
|
-
puts "
|
116
|
+
if "apt" == manager && package =~ /^rubygems(\d+\.\d+(?:\.\d+)?)$/
|
117
|
+
puts "/usr/bin/gem#{$1} install rubygems-update"
|
118
|
+
puts "PATH=\"$PATH:/var/lib/gems/#{$1}/bin\" /usr/bin/ruby#{
|
119
|
+
$1} /usr/bin/update_rubygems"
|
135
120
|
end
|
136
121
|
}
|
137
122
|
)
|
@@ -181,33 +166,49 @@ EOF
|
|
181
166
|
command =~ /gem(\d+\.\d+(?:\.\d+)?) install/
|
182
167
|
ruby_version = $1
|
183
168
|
case manager
|
169
|
+
|
184
170
|
when "apt"
|
185
171
|
unless manager == package
|
186
172
|
manifest[manager] << Package.new(package, :ensure => version)
|
187
173
|
end
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
174
|
+
|
175
|
+
# Update RubyGems.
|
176
|
+
if package =~ /^rubygems(\d+\.\d+(?:\.\d+)?)$/
|
177
|
+
v = $1
|
178
|
+
prereq = if "1.8" == v
|
179
|
+
manifest[manager] << Package.new("rubygems-update",
|
180
|
+
:require => Package["rubygems1.8"],
|
181
|
+
:provider => :gem,
|
182
|
+
:ensure => :latest
|
183
|
+
)
|
184
|
+
Package["rubygems1.8"]
|
185
|
+
else
|
186
|
+
manifest[manager] << Exec.new(
|
187
|
+
"/usr/bin/gem#{v} install --no-rdoc --no-ri rubygems-update",
|
188
|
+
:alias => "rubygems-update-#{v}",
|
189
|
+
:require => Package["rubygems#{v}"]
|
190
|
+
)
|
191
|
+
Exec["rubygems-update-#{v}"]
|
192
|
+
end
|
193
|
+
manifest[manager] << Exec.new(
|
194
|
+
"/usr/bin/ruby#{v} /usr/bin/update_rubygems",
|
195
|
+
:path => %W(/usr/bin /var/lib/gems/#{v}/bin),
|
196
|
+
:require => prereq
|
198
197
|
)
|
199
198
|
end
|
200
|
-
|
199
|
+
|
200
|
+
# Only 1.8 can use the native gem package provider.
|
201
|
+
when "rubygems1.8"
|
201
202
|
options = {
|
202
203
|
:require => [
|
203
204
|
Puppet::Class[managers[manager]],
|
204
|
-
Package["
|
205
|
+
Package["rubygems1.8"],
|
205
206
|
],
|
206
207
|
:provider => :gem,
|
207
208
|
:ensure => version
|
208
209
|
}
|
209
|
-
options[:require] += [Package[manager]] unless manager == package
|
210
210
|
manifest[manager] << Package.new(package, options)
|
211
|
+
|
211
212
|
when /python/
|
212
213
|
manifest[manager] << Exec.new(sprintf("#{command}", package),
|
213
214
|
:require => [
|
@@ -226,20 +227,6 @@ EOF
|
|
226
227
|
]
|
227
228
|
)
|
228
229
|
end
|
229
|
-
},
|
230
|
-
:after => lambda { |manager, command|
|
231
|
-
p = packages[manager]["_packages"]
|
232
|
-
return if 0 == p.length || 1 == p.length && manager == p.keys.first
|
233
|
-
|
234
|
-
# Update RubyGems if we're through with gems in Debian's location.
|
235
|
-
return unless manager =~ /^rubygems\d+\.\d+(?:\.\d+)?$/
|
236
|
-
return unless p["rubygems-update"]
|
237
|
-
manifest[manager] << Exec.new("update_rubygems",
|
238
|
-
:subscribe => Package["rubygems-update"],
|
239
|
-
:path => %w(/usr/bin /var/lib/gems/1.8/bin),
|
240
|
-
:refreshonly => true
|
241
|
-
)
|
242
|
-
|
243
230
|
}
|
244
231
|
)
|
245
232
|
|
data/lib/devstructure/puppet.rb
CHANGED
@@ -15,7 +15,7 @@ module DevStructure::Puppet
|
|
15
15
|
|
16
16
|
def initialize(name, parent=nil)
|
17
17
|
@name, @parent = name, parent
|
18
|
-
@manifests, @resources = {},
|
18
|
+
@manifests, @resources = {}, {}
|
19
19
|
end
|
20
20
|
|
21
21
|
# Return a reference to a sub-manifest of the given name.
|
@@ -28,7 +28,8 @@ module DevStructure::Puppet
|
|
28
28
|
|
29
29
|
# Add a resource to this manifest.
|
30
30
|
def <<(resource)
|
31
|
-
@resources
|
31
|
+
@resources[resource.type] ||= []
|
32
|
+
@resources[resource.type] << resource
|
32
33
|
end
|
33
34
|
|
34
35
|
def to_s(tab="")
|
@@ -37,8 +38,17 @@ module DevStructure::Puppet
|
|
37
38
|
@manifests.each_value do |manifest|
|
38
39
|
out << manifest.to_s("#{tab}\t")
|
39
40
|
end
|
40
|
-
@resources.each do |
|
41
|
-
|
41
|
+
@resources.each do |type, resources|
|
42
|
+
if 1 < resources.length
|
43
|
+
out << "#{tab}\t#{type} {"
|
44
|
+
resources.each do |resource|
|
45
|
+
resource.style = :partial
|
46
|
+
out << resource.to_s("#{tab}\t")
|
47
|
+
end
|
48
|
+
out << "#{tab}\t}"
|
49
|
+
else
|
50
|
+
out << resources.first.to_s("#{tab}\t")
|
51
|
+
end
|
42
52
|
end
|
43
53
|
out << "#{tab}}"
|
44
54
|
out << "#{tab}include #{@name.gsub(".", "--")}" if @parent
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devstructure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Richard Crowley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-07-12 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|