lib/puppet-debugger/support/scope.rb in puppet-debugger-0.17.0 vs lib/puppet-debugger/support/scope.rb in puppet-debugger-0.18.0
- old
+ new
@@ -6,9 +6,36 @@
# @param [Puppet::Pops::Scope] - Scope object or nil
def set_scope(value)
@scope = value
end
+ def catalog
+ @catalog || scope.compiler.catalog
+ end
+
+ def get_catalog_text(c)
+ return nil unless c
+ Puppet::FileSystem.read(c, :encoding => 'utf-8')
+ end
+
+ def set_catalog(catalog_file)
+ return unless catalog_file
+ catalog_text = get_catalog_text(catalog_file)
+ scope # required
+ Puppet.override({:current_environment => environment}, _("For puppet debugger")) do
+ format = Puppet::Resource::Catalog.default_format
+ begin
+ c = Puppet::Resource::Catalog.convert_from(format, catalog_text)
+ rescue => detail
+ raise Puppet::Error, _("Could not deserialize catalog from %{format}: %{detail}") % { format: format, detail: detail }, detail.backtrace
+ end
+ # Resolve all deferred values and replace them / mutate the catalog
+ # Puppet 6 only
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, c) if Gem::Version.new(Puppet.version) >= Gem::Version.new('6.0.0')
+ @catalog = c
+ end
+ end
+
# @return [Puppet::Pops::Scope] - returns a puppet scope object
def scope
@scope ||= create_scope
end