devstructure 0.0.7 → 0.0.8
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.
- data/lib/devstructure/blueprint.rb +48 -8
- metadata +4 -4
@@ -38,14 +38,56 @@ class DevStructure::Blueprint < Hash
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def -(other)
|
41
|
-
b = self
|
41
|
+
b = Marshal.load(Marshal.dump(self))
|
42
|
+
|
43
|
+
# First pass removes all duplicates except managers.
|
42
44
|
other.walk(
|
43
45
|
:package => lambda { |manager, command, package, version|
|
44
|
-
|
45
|
-
|
46
|
+
return if b.packages[package]
|
47
|
+
b.packages[manager]["_packages"].delete package
|
48
|
+
}
|
49
|
+
)
|
50
|
+
|
51
|
+
# Second pass removes managers that manage no packages.
|
52
|
+
# For RubyGems we have to dig a little deeper to see what is managed
|
53
|
+
# by rubygems-update.
|
54
|
+
b.walk(
|
55
|
+
:package => lambda { |manager, command, package, version|
|
56
|
+
return unless b.packages[package]
|
57
|
+
test = if package =~ /^rubygems(\d+\.\d+)$/
|
58
|
+
b.packages["rubygems-update"]
|
59
|
+
else
|
60
|
+
b.packages[package]
|
46
61
|
end
|
62
|
+
if test
|
63
|
+
case test["_packages"].length
|
64
|
+
when 0
|
65
|
+
when 1
|
66
|
+
return unless test["_packages"]["rubygems-update"]
|
67
|
+
else
|
68
|
+
return
|
69
|
+
end
|
70
|
+
end
|
71
|
+
p = b.packages[manager]["_packages"]
|
72
|
+
p.delete package
|
73
|
+
b.packages.delete manager if 0 == p.length
|
47
74
|
}
|
48
75
|
)
|
76
|
+
|
77
|
+
# Third pass adds back special dependencies like ruby*-dev.
|
78
|
+
b.walk(
|
79
|
+
:after => lambda { |manager, command|
|
80
|
+
case manager
|
81
|
+
|
82
|
+
# Match a version of ruby*-dev to a version of rubygems*.
|
83
|
+
when /^rubygems(\d+\.\d+)$/
|
84
|
+
b.packages["apt"]["_packages"]["ruby#{$1}-dev"] =
|
85
|
+
packages["apt"]["_packages"]["ruby#{$1}-dev"]
|
86
|
+
|
87
|
+
end
|
88
|
+
}
|
89
|
+
)
|
90
|
+
|
49
91
|
b
|
50
92
|
end
|
51
93
|
|
@@ -76,7 +118,7 @@ EOF
|
|
76
118
|
# Packages.
|
77
119
|
walk(
|
78
120
|
:package => lambda { |manager, command, package, version|
|
79
|
-
return if
|
121
|
+
return if manager == package
|
80
122
|
printf "#{command}\n", package, version
|
81
123
|
if "rubygems-update" == package && command =~ /gem(\d+\.\d+) install/
|
82
124
|
puts "PATH=\"$PATH:/var/lib/gems/#{$1}/bin\" update_rubygems"
|
@@ -117,7 +159,7 @@ EOF
|
|
117
159
|
walk(
|
118
160
|
:before => lambda { |manager, command|
|
119
161
|
p = packages[manager]["_packages"]
|
120
|
-
return if 0 == p.length || 1 == p.length && manager
|
162
|
+
return if 0 == p.length || 1 == p.length && p[manager]
|
121
163
|
puts "\n\t# Packages that depend on #{manager}."
|
122
164
|
case manager
|
123
165
|
when /rubygems|rip/
|
@@ -166,9 +208,7 @@ EOF
|
|
166
208
|
|
167
209
|
# Debian packages get no special treatment.
|
168
210
|
else
|
169
|
-
|
170
|
-
puts Package.partial(package, :ensure => version)
|
171
|
-
else
|
211
|
+
unless manager == package
|
172
212
|
puts Package.partial(package,
|
173
213
|
:require => Package[manager],
|
174
214
|
:ensure => version
|
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: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 8
|
10
|
+
version: 0.0.8
|
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-
|
18
|
+
date: 2010-06-16 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|