Skip to content

Refactor session headings in the frontend

This merge request fixes redundant session headings at startup time (issue #1369 (closed)) and enhances the session heading to capture properties of loaded projects separately.

Outline of changes:

  • The Project only ever loads one set of plugins, so we cannot have the same plugin loaded differently at different stages of the load process.
    • As a result, plugins must only ever be specified in project.conf and cannot be included
    • For added consistency across projects, we now also validate that the name, element-path and min-version fields are specified in the project.conf and not in an included file
    • The validation of keys being specified in the project.conf required specifying the shortname value to _yaml.load() consistently
      • In order to improve this consistency later on, made shortname a required argument
      • Another side effect here is that we specify the project argument to _yaml.load() more consistently, which was missing when loading the project.conf itself, this improves provenances reported in cross project project.conf parse errors.
    • These new restrictions are documented in the project.conf documentation, and the breaking change mentioned in NEWS
  • PluginFactory now reports detailed information of how each plugin was loaded
  • The Stream object is now selective about when it calls the session started callback provided by the frontend
    • This was the root cause of #1369 (closed), causing the session heading to be redundantly printed when fetching a subproject
  • In the session heading, information about each individually loaded project is now printed
    • The junction path of the project, if any
    • The provenance indicating why the project was loaded, if the project was loaded via some junction
    • The parent projects which declared the project as a duplicate, if any
    • The parent projects which declared the project as internal, if any
    • The resolved project option values of the project, if any
    • The loaded plugins of the project, including a detailed description of how they were loaded
Edited by Tristan Van Berkom

Merge request reports