diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2005-10-31 22:50:09 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2005-10-31 22:50:09 +0000 |
commit | 03357432210eecc5f370f812f473bc5d0a062d64 (patch) | |
tree | 255b176c9abe839d1d2d3e4919a7527a6f01d37c /lib | |
parent | ba76eb2da506aee52b5bbbce842fa5ac361540a0 (diff) | |
download | puppet-03357432210eecc5f370f812f473bc5d0a062d64.tar.gz puppet-03357432210eecc5f370f812f473bc5d0a062d64.tar.xz puppet-03357432210eecc5f370f812f473bc5d0a062d64.zip |
adding config file stuff, but not using it yet. I have decided to release the next version without them.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@738 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/config.rb | 49 | ||||
-rw-r--r-- | lib/puppet/type.rb | 1 |
2 files changed, 50 insertions, 0 deletions
diff --git a/lib/puppet/config.rb b/lib/puppet/config.rb new file mode 100644 index 000000000..dc8b05f56 --- /dev/null +++ b/lib/puppet/config.rb @@ -0,0 +1,49 @@ +module Puppet # :nodoc: +# The class for handling configuration files. +class Config < Hash + # Slight override, since we can't seem to have a subclass where all instances + # have the same default block. + def [](section) + unless self.has_key?(section) + self[section] = {} + end + super + end + + def initialize(file) + text = nil + + begin + text = File.read(file) + rescue Errno::ENOENT + raise Puppet::Error, "No such file %s" % file + rescue Errno::EACCES + raise Puppet::Error, "Permission denied to file %s" % file + end + + # Store it for later, in a way that we can test and such. + @file = Puppet::ParsedFile.new(file) + + @values = Hash.new { |names, name| + names[name] = {} + } + + section = "puppet" + text.split(/\n/).each { |line| + case line + when /^\[(\w+)\]$/: section = $1 # Section names + when /^\s*#/: next # Skip comments + when /^\s*$/: next # Skip blanks + when /^\s*(\w+)\s+(.+)$/: # settings + var = $1 + value = $2 + self[section][var] = value + else + raise Puppet::Error, "Could not match line %s" % line + end + } + end +end +end + +# $Id$ diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index 0735d3945..73963d2aa 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -815,6 +815,7 @@ class Type < Puppet::Element # and such. This allows for two specifications of the same object and # the same values, but it's pretty limited right now. The result of merging # states is very different from the result of merging parameters or metaparams. + # This is currently unused. def merge(hash) hash.each { |param, value| if param.is_a?(String) |