summaryrefslogtreecommitdiffstats
path: root/lib/puppet/config.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2005-10-31 22:50:09 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2005-10-31 22:50:09 +0000
commit03357432210eecc5f370f812f473bc5d0a062d64 (patch)
tree255b176c9abe839d1d2d3e4919a7527a6f01d37c /lib/puppet/config.rb
parentba76eb2da506aee52b5bbbce842fa5ac361540a0 (diff)
downloadpuppet-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/puppet/config.rb')
-rw-r--r--lib/puppet/config.rb49
1 files changed, 49 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$