devstructure 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 "rubygems-update" == package && command =~ /gem(\d+\.\d+(?:\.\d+)?) install/
134
- puts "PATH=\"$PATH:/var/lib/gems/#{$1}/bin\" update_rubygems"
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
- when "rubygems-update"
189
- unless manager == package
190
- manifest[manager] << Package.new(package,
191
- :require => [
192
- Puppet::Class[managers[manager]],
193
- Package["ruby#{ruby_version}-dev"],
194
- Exec["update_rubygems"],
195
- ],
196
- :provider => :gem,
197
- :ensure => version
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
- when /rubygems|rip/
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["rubygems#{ruby_version}", "ruby#{ruby_version}-dev"],
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
 
@@ -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 << resource
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 |resource|
41
- out << resource.to_s("#{tab}\t")
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: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
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-06-27 00:00:00 +00:00
18
+ date: 2010-07-12 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency