Skip to content

[FR] Revive xpcf cli project for module instrospection #21

@jim-bcom

Description

@jim-bcom

PROBLEM
Currently our configuration files tend to contain a comprehensive list of all available properties for all the components that are used.

This serves somehow as a documentation for the user, letting him know what are the available properties with their types.

This has a significant maintenance cost when the module components evolves (add/remove/rename properties).

But this is the only way for us to let the user know about the properties in a convenient manner, apart from documenting them in the component header file (which we do), or in a textual documentation shipped with the component.

All these solutions have the same maintenance issue.

SUGGESTED SOLUTIONS
It'd be nice if we could have only one source of truth, the source code.

It appears that the xpcfcli project does just that.

This could allow us to reduce the size of our configuration files, and give a user a way to update its configuration file without having access to the source (since the definition of the module properties is done in the .cpp file).

I gave it a try on on of our modules, but it crashed after having partially produced an xml output of the component list:

xpcfcli: ../../.conan/data/boost/1.78.0/_/_/package/9c097173c769786802e85151204758f1f62f461f/include/boost/smart_ptr/shared_ptr.hpp:786: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = org::bcom::xpcf::IPropertyManager; typename boost::detail::sp_member_access<T>::type = org::bcom::xpcf::IPropertyManager*]: Assertion `px != 0' failed.
Aborted

So I guess this project might need an update.

We coud use it to dump a configuration file template for the all modules for example, filter components by name to get a template with only the one we intend to use in a given app, or find other usage to be determine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions