Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Config file loading options #1012

Closed
wants to merge 5 commits into from
Closed

Conversation

chapulina
Copy link
Contributor

🎉 New feature

Closes #796

Summary

Trying some documentation-driven-development ✍️

I'd like some feedback on the intended behavior before working on the implementation. See also the conversation on #796.

I'm not planning on changing the default behavior for Fortress because I couldn't come up with a migration plan that would have minimal impact on users, but I'm open to ideas.

Whatever is mentioned here for the GUI config will also apply to the server config.

Test it

TODO

Checklist

  • Signed all commits for DCO
  • Added tests
  • Added example and/or tutorial
  • Updated documentation (as needed)
  • Updated migration guide (as needed)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸

Signed-off-by: Louise Poubel <louise@openrobotics.org>
@github-actions github-actions bot added the 🏯 fortress Ignition Fortress label Sep 7, 2021
Copy link
Contributor

@mjcarroll mjcarroll left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few grammar nits as well as a more general comment about loading order resolution.

tutorials/gui_config.md Outdated Show resolved Hide resolved
tutorials/gui_config.md Outdated Show resolved Hide resolved
tutorials/gui_config.md Outdated Show resolved Hide resolved
`--gui-config` is provided explicitly, that is used, otherwise, the default
config file is used.
* `ignore`: Ignore the config file completely and load only plugins from SDF.
* `prepend`: Load plugins from both the config file and the SDF file. The config
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only thing that I think could be troublesome here is if you had duplicate plugins. The scenario that I'm thinking of would be having "specific" configuration in the SDF file and "generic" configuration in the gui.config file.

In that case, I think that you would want to prefer the "specific" configuration from the SDF file.

The implementation should take into account this scenario as well as the possibility of having duplicated plugins from the two configurations available.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that's complicated to handle, because there are valid use cases for duplicate plugins, on both the GUI and the server. You may want multiple ImageDisplays or multiple WindEffects, for example.

I don't have a good idea on how to handle that. Maybe each plugin can be responsible for shortcutting multiple instantiation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a merge option to cover this use case, with an example. Let me know what you think 4ab37d6. Coming back to this after so many months, now I think this will be my favorite option.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reduced the number of options to 2 in d7a7677 and will work on the implementation now

The default behaviour can be overridden using the `--gui-config-options`
command line argument, which offers options:

* `force`: Force the use of the GUI config file, ignoring the SDF file. If a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about making force override --gui-config as well? Specifying both --gui-config-options force and --gui-config is a bit odd, and probably will never be done. However, it seems easier and cleaner to remember that force is a complete force without a caveat.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand the proposal. Are you saying that --gui-config <path_to_file> should imply force? I believe that's already in the current proposal. If --gui-config is provided and --gui-config-option is empty, it works like a force.

See these lines on the table below:

--gui-config     | SDF `<gui>`  | --gui-config-option      | Result
---------------- | ------------ | ------------------------ | ------
provided         | no plugins   | empty / force / prepend  | Load plugins from `--gui-config`
provided         | has plugins  | empty / force            | Load plugins from `--gui-config`

@chapulina chapulina mentioned this pull request Sep 8, 2021
8 tasks
@chapulina chapulina added the beta Targeting beta release of upcoming collection label Sep 8, 2021
@chapulina
Copy link
Contributor Author

I'll remove this from the beta for now to give it some more thought. It would be nice to handle plugins repeated not on purpose nicely.

@chapulina chapulina removed the beta Targeting beta release of upcoming collection label Sep 21, 2021
@chapulina chapulina added 🌱 garden Ignition Garden and removed 🏯 fortress Ignition Fortress labels Nov 16, 2021
Signed-off-by: Louise Poubel <louise@openrobotics.org>
@chapulina chapulina changed the base branch from main to ign-gazebo6 May 4, 2022 17:02
Signed-off-by: Louise Poubel <louise@openrobotics.org>
Signed-off-by: Louise Poubel <louise@openrobotics.org>
Signed-off-by: Louise Poubel <louise@openrobotics.org>
@chapulina
Copy link
Contributor Author

I won't have time to go back to this soon

@chapulina chapulina closed this Jul 23, 2022
@chapulina chapulina deleted the chapulina/6/config branch August 31, 2022 04:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🌱 garden Ignition Garden
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Config file loading options
3 participants