From e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9 Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 6 Apr 2006 04:00:59 +0000 Subject: Adding autoloading for types and service types, also. git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1090 980ebf18-57e1-0310-9a29-db15c13687c0 --- lib/puppet/type.rb | 11 +++++++++++ lib/puppet/type/service.rb | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) 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 -- cgit