From 5c9b0be86776dc1fa9364cc0f4377bcd6b884c89 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Fri, 29 May 2026 14:00:27 -0500 Subject: [PATCH] [studio] Add subcommands output on invalid subcommand dispatch --- src/olympic/applib/applib.cpp | 2 +- src/olympic/studio/applib/src/app.cpp | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/olympic/applib/applib.cpp b/src/olympic/applib/applib.cpp index c0bfaf3f..f3292e5d 100644 --- a/src/olympic/applib/applib.cpp +++ b/src/olympic/applib/applib.cpp @@ -77,7 +77,7 @@ int main(int const argc, char const **argv) { OLYMPIC_PROJECT_DATADIR, {argv, static_cast(argc)}); oxAssert(err, "Something went wrong..."); - if (err) { + if (ox::defines::Debug && err) { oxErrf("Failure: {}\n", toStr(err)); } return static_cast(err); diff --git a/src/olympic/studio/applib/src/app.cpp b/src/olympic/studio/applib/src/app.cpp index 6d04746c..75b1ebd1 100644 --- a/src/olympic/studio/applib/src/app.cpp +++ b/src/olympic/studio/applib/src/app.cpp @@ -116,6 +116,20 @@ static ox::Error runStudio( return err; } +static void listCmds() noexcept { + oxOut("Insufficient arguments for sub-command\n\nValid commands:\n\n"); + for (auto const m : modules()) { + if (m->commands().empty()) { + continue; + } + oxOutf("\t{}\n", m->id()); + for (auto const &c : m->commands()) { + oxOutf("\t\t{}\n", c.name); + } + oxOut("\n"); + } +} + static ox::Error run( ox::StringViewCR appName, ox::StringViewCR projectDataDir, @@ -130,7 +144,8 @@ static ox::Error run( }); if (args.size() > 1 && ox::StringView{args[1]} == "cmd") { if (args.size() < 5) { - return ox::Error{1, "insufficient arguments for sub-command"}; + listCmds(); + return ox::Error{1}; } auto constexpr numCmdArgs = 5; ox::StringView const projectDir = args[2];