diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-06 04:00:59 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-04-06 04:00:59 +0000 |
commit | e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9 (patch) | |
tree | cf275552aa0eb4a5b79ad27760aaa1562df47bb4 | |
parent | fcce8203fdb77c7135fd1fcae9a0e45c9b6073c3 (diff) | |
download | puppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.tar.gz puppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.tar.xz puppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.zip |
Adding autoloading for types and service types, also.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1090 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | lib/puppet/type.rb | 11 | ||||
-rw-r--r-- | lib/puppet/type/service.rb | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index 8663a6aa4..73897776f 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -215,6 +215,17 @@ class Type < Puppet::Element name = name.intern end + unless @types.include? name + begin + require "puppet/type/#{name}" + unless @types.include? name + Puppet.warning "Loaded puppet/type/#{name} but no class was created" + end + rescue LoadError + # nothing + end + end + @types[name] end diff --git a/lib/puppet/type/service.rb b/lib/puppet/type/service.rb index af2f0a376..ea43a9ce2 100644 --- a/lib/puppet/type/service.rb +++ b/lib/puppet/type/service.rb @@ -315,6 +315,22 @@ module Puppet # Retrieve a service type. def self.svctype(name) + name = name.intern if name.is_a? String + + # Try autoloading lacking service types. + unless @modules.include? name + begin + require "puppet/type/service/#{name}" + unless @modules.include? name + Puppet.warning( + "Loaded puppet/type/service/#{name} but " + + "service type was not created" + ) + end + rescue LoadError + # nothing + end + end @modules[name] end |