railsmachine-shadow_puppet 0.1.17 → 0.3.0

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.
@@ -1,5 +1,4 @@
1
1
  require 'puppet'
2
- require 'configatron'
3
2
  require 'erb'
4
3
  require File.join(File.dirname(__FILE__) + '/shadow_puppet', 'core_ext.rb')
5
4
  require File.join(File.dirname(__FILE__) + '/shadow_puppet', 'manifest.rb')
@@ -3,8 +3,22 @@ require 'active_support/core_ext/array'
3
3
  require 'active_support/inflector'
4
4
  require 'active_support/core_ext/class/inheritable_attributes'
5
5
  require 'active_support/core_ext/duplicable'
6
- class Configatron::Store
7
- def to_s
8
- ''
6
+ class Hash #:nodoc:
7
+ def deep_merge(other_hash)
8
+ self.merge(other_hash) do |key, oldval, newval|
9
+ oldval = oldval.to_hash if oldval.respond_to?(:to_hash)
10
+ newval = newval.to_hash if newval.respond_to?(:to_hash)
11
+ oldval.is_a?(Hash) && newval.is_a?(Hash) ? oldval.deep_merge(newval) : newval
12
+ end
13
+ end
14
+ def deep_merge!(other_hash)
15
+ replace(deep_merge(other_hash))
16
+ end
17
+ def deep_symbolize_keys
18
+ self.inject({}) { |result, (key, value)|
19
+ value = value.deep_symbolize_keys if value.is_a?(Hash)
20
+ result[(key.to_sym rescue key) || key] = value
21
+ result
22
+ }
9
23
  end
10
24
  end
@@ -76,8 +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
+ class_inheritable_accessor :__config__
80
+ write_inheritable_attribute(:__config__, Hash.new)
81
81
 
82
82
  # Initialize a new instance of this manifest. This can take a
83
83
  # config hash, which is immediately passed on to the configure
@@ -113,20 +113,12 @@ module ShadowPuppet
113
113
  return nil if methods.nil? || methods == []
114
114
  options = methods.extract_options!
115
115
  methods.each do |meth|
116
- options = configatron.send(meth.to_sym) if options == {}
116
+ options = configuration[meth.to_sym] if options == {}
117
117
  options ||= {}
118
118
  recipes << [meth.to_sym, options]
119
119
  end
120
120
  end
121
121
 
122
- def self.configatron
123
- __configatron__
124
- end
125
-
126
- def configatron
127
- self.class.__configatron__
128
- end
129
-
130
122
  # A hash describing any configuration that has been
131
123
  # performed on the class. Modify this hash by calling configure:
132
124
  #
@@ -135,15 +127,24 @@ module ShadowPuppet
135
127
  # end
136
128
  #
137
129
  # >> SampleManifest.configuration
138
- # => {"name" => 'test'}
130
+ # => {:name => 'test'}
131
+ #
132
+ # All keys on this hash are coerced into symbols for ease of access.
139
133
  #
140
134
  # Subclasses of the Manifest class properly inherit the parent classes'
141
135
  # configuration.
142
136
  def self.configuration
143
- configatron.to_hash
137
+ __config__.deep_symbolize_keys
144
138
  end
145
139
 
146
- # Access to the configuration of the creating class.
140
+ # Access to the configuration of the class of this instance.
141
+ #
142
+ # class SampleManifest < ShadowPuppet::Manifest
143
+ # configure(:name => 'test')
144
+ # end
145
+ #
146
+ # @manifest = SampleManifest.new
147
+ # @manifest.configuration[:name] => "test"
147
148
  def configuration
148
149
  self.class.configuration
149
150
  end
@@ -151,24 +152,32 @@ module ShadowPuppet
151
152
  # Define configuration on this manifest. This is useful for storing things
152
153
  # such as hostnames, password, or usernames that may change between
153
154
  # different implementations of a shared manifest. Access this hash by
154
- # calling configuration:
155
+ # calling <tt>configuration</tt>:
155
156
  #
156
157
  # class SampleManifest < ShadowPuppet::Manifest
157
- # configure(:name => 'test')
158
+ # configure('name' => 'test')
158
159
  # end
159
160
  #
160
161
  # >> SampleManifest.configuration
161
- # => {"name" => 'test'}
162
+ # => {:name => 'test'}
163
+ #
164
+ # All keys on this hash are coerced into symbols for ease of access.
162
165
  #
163
- # Subsequent calls to configure perform a deep_merge of the
164
- # provided <tt>hash</tt> into the pre-existing configuration
166
+ # Subsequent calls to configure perform a deep_merge of the provided
167
+ # <tt>hash</tt> into the pre-existing configuration.
165
168
  def self.configure(hash)
166
- __configatron__.configure_from_hash(hash)
169
+ __config__.deep_merge!(hash)
167
170
  end
168
171
 
169
- # Define configuration on this manifest's creating class. This is useful
170
- # for storing things such as hostnames, password, or usernames that may
171
- # change between different implementations of a shared manifest.
172
+ # Update the configuration of this manifest instance's class.
173
+ #
174
+ # class SampleManifest < ShadowPuppet::Manifest
175
+ # configure({})
176
+ # end
177
+ #
178
+ # @manifest = SampleManifest.new
179
+ # @manifest.configure(:name => "test")
180
+ # @manifest.configuration[:name] => "test"
172
181
  def configure(hash)
173
182
  self.class.configure(hash)
174
183
  end
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.17
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Newland
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-06 00:00:00 -08:00
12
+ date: 2009-03-12 00:00:00 -07:00
13
13
  default_executable: shadow_puppet
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -62,16 +62,6 @@ dependencies:
62
62
  - !ruby/object:Gem::Version
63
63
  version: 2.0.0
64
64
  version:
65
- - !ruby/object:Gem::Dependency
66
- name: configatron
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: 2.2.2
74
- version:
75
65
  description: A Ruby Puppet DSL
76
66
  email:
77
67
  - jesse@railsmachine.com