diff options
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 0e81c109f..b4936dd23 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -361,6 +361,7 @@ class Puppet::Parser::Interpreter end @files = [] + @loaded = [] # Create our parser object parsefiles @@ -384,15 +385,19 @@ class Puppet::Parser::Interpreter loaded = false # First try to load the top-level module mod = filename.scan(/^[\w-]+/).shift - begin - @parser.import(mod) - Puppet.info "Autoloaded module %s" % mod - loaded = true - rescue Puppet::ImportError => detail - # We couldn't load the module + unless @loaded.include?(mod) + @loaded << mod + begin + @parser.import(mod) + Puppet.info "Autoloaded module %s" % mod + loaded = true + rescue Puppet::ImportError => detail + # We couldn't load the module + end end - unless filename == mod + unless filename == mod and ! @loaded.include?(mod) + @loaded << mod # Then the individual file begin @parser.import(filename) |