On Thu, 2024-10-24 at 12:08 -0400, Luiz Augusto von Dentz wrote: > Hi Bastien, > > On Tue, Oct 22, 2024 at 10:11 AM Bastien Nocera <hadess@xxxxxxxxxx> > wrote: > > > > Exit after printing all the main and submenu commands. > > --- > > client/main.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/client/main.c b/client/main.c > > index f60bef1a6d3a..f5ed9f9f5297 100644 > > --- a/client/main.c > > +++ b/client/main.c > > @@ -3193,6 +3193,8 @@ int main(int argc, char *argv[]) > > assistant_add_submenu(); > > bt_shell_set_prompt(PROMPT_OFF, NULL); > > > > + bt_shell_handle_non_interactive_help(); > > + > > if (agent_option) > > auto_register_agent = g_strdup(agent_option); > > else > > -- > > 2.47.0 > > > > Having some thoughts about how to do this is more clean way, perhaps > we should do this as part of bt_shell_run and then introduce .run > callback to bt_shell_menu so it is called as part of bt_shell_run, > under the .run callback the menu can place e.g. DBUS connection > setup, > etc, but before it reaches that we can check if it just a help > pending. We need to: 1) set the top menu 2) populate the submenus without any D-Bus IO 3) turn off the prompt 4) print the help and exit if that's what was requested 5) setup IO for submenus 6) run the mainloop I guess I could do 2) with a callback from bt_shell_set_menu() and then do 4) and 5) from a bt_shell_run() callback. Is that what you expected? Do you have preferred names for the callback functions? I think that we can still use the function split from 3/7, did you have a better name for the functions? Cheers