railsmachine-shadow_puppet 0.1.16 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
data/bin/shadow_puppet CHANGED
@@ -88,8 +88,7 @@ begin
88
88
  klass = File.basename(filename, ".rb")
89
89
  require filename
90
90
  manifest = klass.classify.constantize.new
91
- execute = manifest.execute
92
- execute ? exit(0) : exit(1)
91
+ manifest.execute! && exit(0)
93
92
  rescue Errno::EACCES
94
93
  puts "Please run shadow_puppet as root"
95
94
  rescue Exception => e
@@ -1,3 +1,10 @@
1
1
  require 'active_support/core_ext/class/attribute_accessors'
2
2
  require 'active_support/core_ext/array'
3
- require 'active_support/inflector'
3
+ require 'active_support/inflector'
4
+ require 'active_support/core_ext/class/inheritable_attributes'
5
+ require 'active_support/core_ext/duplicable'
6
+ class Configatron::Store
7
+ def to_s
8
+ ''
9
+ end
10
+ end
@@ -76,6 +76,8 @@ module ShadowPuppet
76
76
  class_inheritable_accessor :recipes
77
77
  write_inheritable_attribute(:recipes, [])
78
78
  attr_reader :puppet_resources
79
+ class_inheritable_accessor :__configatron__
80
+ write_inheritable_attribute(:__configatron__, Configatron::Store.new)
79
81
 
80
82
  # Initialize a new instance of this manifest. This can take a
81
83
  # config hash, which is immediately passed on to the configure
@@ -117,6 +119,14 @@ module ShadowPuppet
117
119
  end
118
120
  end
119
121
 
122
+ def self.configatron
123
+ __configatron__
124
+ end
125
+
126
+ def configatron
127
+ self.class.__configatron__
128
+ end
129
+
120
130
  # A hash describing any configuration that has been
121
131
  # performed on the class. Modify this hash by calling configure:
122
132
  #
@@ -153,7 +163,7 @@ module ShadowPuppet
153
163
  # Subsequent calls to configure perform a deep_merge of the
154
164
  # provided <tt>hash</tt> into the pre-existing configuration
155
165
  def self.configure(hash)
156
- configatron.configure_from_hash(hash)
166
+ __configatron__.configure_from_hash(hash)
157
167
  end
158
168
 
159
169
  # Define configuration on this manifest's creating class. This is useful
@@ -201,11 +211,34 @@ module ShadowPuppet
201
211
  true
202
212
  end
203
213
 
204
- # Execute this manifest, applying all resources defined. By default, this
205
- # will only execute a manifest that is executable?. The +force+ argument,
206
- # if true, removes this check.
214
+ def missing_recipes
215
+ missing = self.class.recipes.each do |meth,args|
216
+ !respond_to?(meth)
217
+ end
218
+ end
219
+
220
+ # Execute this manifest, applying all resources defined. Execute returns
221
+ # true if successfull, and false if unsucessfull. By default, this
222
+ # will only execute a manifest that has not already been executed?.
223
+ # The +force+ argument, if true, removes this check.
207
224
  def execute(force=false)
208
- return false unless executable? || force
225
+ return false if executed? && !force
226
+ evaluate_recipes
227
+ apply
228
+ rescue Exception => e
229
+ false
230
+ else
231
+ true
232
+ ensure
233
+ @executed = true
234
+ end
235
+
236
+ # Execute this manifest, applying all resources defined. Execute returns
237
+ # true if successfull, and raises an exception if not. By default, this
238
+ # will only execute a manifest that has not already been executed?.
239
+ # The +force+ argument, if true, removes this check.
240
+ def execute!(force=false)
241
+ return false if executed? && !force
209
242
  evaluate_recipes
210
243
  apply
211
244
  rescue Exception => e
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railsmachine-shadow_puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Newland