devstructure 0.1.2 → 0.1.3

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.
@@ -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