Hi Corey,

Yes, your solution is indeed hackish as it performs surgery on undocumented
implementation internals that might change without notice :-). Please don't
do that.

We currently have no way of presenting a full list. In order to do that, we
must implement new functionality on the Puppet::Pops::Loaders::Loader. The
loaders form a directed acyclic graph where the leafs are the private
loaders of each module. Different loaders see different things. Code loaded
from one module will not automatically see all things loaded from other
modules. It will just see modules that it is immediately dependent on. This
is probably something that the debugger needs to be aware of.

I would envision that the debugger would obtain the loader by doing
Puppet::Pops::Loaders.find_loader(<a
module name>) or by asking what loader that is attached to the current AST
using the Puppet::Pops::Adapters::LoaderAdapter.loader_for_model_object
method. It would then obtain the list from there. The list will vary
depending on loader.

A complicating factor might be that most types are loaded on demand. I.e.
the loader doesn't know about them until the type is referenced loaded (or
missing) as a response to that reference. Perhaps we'll need to design
something that loads everything eagerly.

In any case, please enter a ticket (or tickets) where you explain what the
debugger would need. I think we'll need to work together on this to create
a good solution.

Short term, for the statically loaded things, take a look at
Puppet::Pops::Types::TypeFactory.type_map. It's "@api private" but it's not
likely to change any time soon.

- thomas


On Fri, Mar 31, 2017 at 3:19 AM, Corey Osman <co...@logicminds.biz> wrote:

> Hi,
>
> I have found a way to list datatypes for the puppet-debugger (
> https://github.com/nwops/puppet-debugger) but my approach seems hackish.
> Additionally my approach only seems to pick up the core datatypes and not
> 3rd party types loaded from stdlib puppet module and such.
>
>
> Is there a better way than this?
>
> https://gist.github.com/logicminds/2a7bf4124f3bdb01f1a77d0bb521dffc
>
>
> Corey
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to puppet-dev+unsubscr...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/puppet-dev/D35D28B2-7D65-47C9-8A1A-D1E1C2278AD1%40nwops.io
> <https://groups.google.com/d/msgid/puppet-dev/D35D28B2-7D65-47C9-8A1A-D1E1C2278AD1%40nwops.io?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/CAO5TtCvwGppY56Fb%2BaUvEjPwsZ3XmCTqp%3DFF5vjN_FsUt0dJpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to