Class: Sprinkle::Package::Package
- Includes:
- ArbitraryOptions
- Defined in:
- lib/sprinkle/package.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#dependencies ⇒ Object
Returns the value of attribute dependencies.
-
#installer ⇒ Object
Returns the value of attribute installer.
-
#name ⇒ Object
Returns the value of attribute name.
-
#provides ⇒ Object
Returns the value of attribute provides.
-
#recommends(*packages) ⇒ Object
Returns the value of attribute recommends.
-
#verifications ⇒ Object
Returns the value of attribute verifications.
Instance Method Summary collapse
- #apt(*names, &block) ⇒ Object
- #gem(name, options = {}, &block) ⇒ Object
-
#initialize(name, metadata = {}, &block) ⇒ Package
constructor
A new instance of Package.
- #process(deployment, roles) ⇒ Object
- #process_verifications(deployment, roles, pre = false) ⇒ Object
- #requires(*packages) ⇒ Object
- #rpm(*names, &block) ⇒ Object
- #source(source, options = {}, &block) ⇒ Object
- #to_s ⇒ Object
- #tree(depth = 1, &block) ⇒ Object
- #verify(description = '', &block) ⇒ Object
Methods included from ArbitraryOptions
included, #method_missing_with_arbitrary_options
Constructor Details
#initialize(name, metadata = {}, &block) ⇒ Package
Returns a new instance of Package.
112 113 114 115 116 117 118 119 120 121 |
# File 'lib/sprinkle/package.rb', line 112 def initialize(name, = {}, &block) raise 'No package name supplied' unless name @name = name @provides = [:provides] @dependencies = [] @recommends = [] @verifications = [] self.instance_eval &block end |
Instance Attribute Details
#dependencies ⇒ Object
Returns the value of attribute dependencies.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def dependencies @dependencies end |
#installer ⇒ Object
Returns the value of attribute installer.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def installer @installer end |
#name ⇒ Object
Returns the value of attribute name.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def name @name end |
#provides ⇒ Object
Returns the value of attribute provides.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def provides @provides end |
#recommends(*packages) ⇒ Object
Returns the value of attribute recommends.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def recommends @recommends end |
#verifications ⇒ Object
Returns the value of attribute verifications.
110 111 112 |
# File 'lib/sprinkle/package.rb', line 110 def verifications @verifications end |
Instance Method Details
#apt(*names, &block) ⇒ Object
123 124 125 |
# File 'lib/sprinkle/package.rb', line 123 def apt(*names, &block) @installer = Sprinkle::Installers::Apt.new(self, *names, &block) end |
#gem(name, options = {}, &block) ⇒ Object
131 132 133 134 |
# File 'lib/sprinkle/package.rb', line 131 def gem(name, = {}, &block) @recommends << :rubygems @installer = Sprinkle::Installers::Gem.new(self, name, , &block) end |
#process(deployment, roles) ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/sprinkle/package.rb', line 145 def process(deployment, roles) return if # Run a pre-test to see if the software is already installed. If so, # we can skip it, unless we have the force option turned on! unless @verifications.empty? || Sprinkle::OPTIONS[:force] begin process_verifications(deployment, roles, true) logger.info "--> #{self.name} already installed for roles: #{roles}" return rescue Sprinkle::VerificationFailed => e # Continue end end @installer.defaults(deployment) @installer.process(roles) process_verifications(deployment, roles) end |
#process_verifications(deployment, roles, pre = false) ⇒ Object
167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/sprinkle/package.rb', line 167 def process_verifications(deployment, roles, pre = false) if pre logger.info "--> Checking if #{self.name} is already installed for roles: #{roles}" else logger.info "--> Verifying #{self.name} was properly installed for roles: #{roles}" end @verifications.each do |v| v.defaults(deployment) v.process(roles) end end |
#requires(*packages) ⇒ Object
180 181 182 183 |
# File 'lib/sprinkle/package.rb', line 180 def requires(*packages) @dependencies << packages @dependencies.flatten! end |
#rpm(*names, &block) ⇒ Object
127 128 129 |
# File 'lib/sprinkle/package.rb', line 127 def rpm(*names, &block) @installer = Sprinkle::Installers::Rpm.new(self, *names, &block) end |
#source(source, options = {}, &block) ⇒ Object
136 137 138 139 |
# File 'lib/sprinkle/package.rb', line 136 def source(source, = {}, &block) @recommends << :build_essential # Ubuntu/Debian @installer = Sprinkle::Installers::Source.new(self, source, , &block) end |
#to_s ⇒ Object
210 |
# File 'lib/sprinkle/package.rb', line 210 def to_s; @name; end |
#tree(depth = 1, &block) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/sprinkle/package.rb', line 190 def tree(depth = 1, &block) packages = [] @recommends.each do |dep| package = PACKAGES[dep] next unless package # skip missing recommended packages as they can be optional block.call(self, package, depth) if block packages << package.tree(depth + 1, &block) end @dependencies.each do |dep| package = PACKAGES[dep] raise "Package definition not found for key: #{dep}" unless package block.call(self, package, depth) if block packages << package.tree(depth + 1, &block) end packages << self end |