From 75791eb2f31b268b4c04338b2ad53f7d956a465a Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Thu, 19 Mar 2026 03:07:27 +0000 Subject: [PATCH] feat(cli): add workflow and package DBAL commands New workflow commands: list, get, run, create, status New package commands: install, uninstall, info, search All backed by DBAL REST API with formatted table/JSON output. Co-Authored-By: Claude Opus 4.6 (1M context) --- frontends/cli/CMakeLists.txt | 1 + .../cli/src/commands/command_dispatch.cpp | 8 +- .../cli/src/commands/package_commands.cpp | 258 ++++++++++++-- frontends/cli/src/commands/package_commands.h | 15 +- .../cli/src/commands/workflow_commands.cpp | 318 ++++++++++++++++++ .../cli/src/commands/workflow_commands.h | 36 ++ 6 files changed, 600 insertions(+), 36 deletions(-) create mode 100644 frontends/cli/src/commands/workflow_commands.cpp create mode 100644 frontends/cli/src/commands/workflow_commands.h diff --git a/frontends/cli/CMakeLists.txt b/frontends/cli/CMakeLists.txt index fd87725c4..a84810fc0 100644 --- a/frontends/cli/CMakeLists.txt +++ b/frontends/cli/CMakeLists.txt @@ -12,6 +12,7 @@ add_executable(metabuilder-cli src/commands/command_dispatch.cpp src/commands/dbal_commands.cpp src/commands/package_commands.cpp + src/commands/workflow_commands.cpp src/lua/lua_runner.cpp src/utils/http_client.cpp ) diff --git a/frontends/cli/src/commands/command_dispatch.cpp b/frontends/cli/src/commands/command_dispatch.cpp index 17644baf0..35d86b73f 100644 --- a/frontends/cli/src/commands/command_dispatch.cpp +++ b/frontends/cli/src/commands/command_dispatch.cpp @@ -1,6 +1,7 @@ #include "command_dispatch.h" #include "dbal_commands.h" #include "package_commands.h" +#include "workflow_commands.h" #include #include @@ -18,6 +19,7 @@ Available commands: tenant get Get a tenant by ID dbal DBAL operations (use 'dbal help' for details) package Package operations (use 'package help' for details) + workflow Workflow operations (use 'workflow help' for details) )"; } @@ -136,7 +138,11 @@ int dispatch(const HttpClient &client, const std::vector &args) { } if (args[0] == "package") { - return handle_package(args); + return handle_package(client, args); + } + + if (args[0] == "workflow") { + return handle_workflow(client, args); } print_help(); diff --git a/frontends/cli/src/commands/package_commands.cpp b/frontends/cli/src/commands/package_commands.cpp index 37dc54580..793f9a20d 100644 --- a/frontends/cli/src/commands/package_commands.cpp +++ b/frontends/cli/src/commands/package_commands.cpp @@ -1,17 +1,30 @@ #include "package_commands.h" #include "../lua/lua_runner.h" +#include +#include + #include #include #include #include +#include #include #include namespace fs = std::filesystem; +using json = nlohmann::json; namespace { +void print_response(const cpr::Response &response) { + std::cout << "status: " << response.status_code << '\n'; + if (response.error) { + std::cout << "error: " << response.error.message << '\n'; + } + std::cout << response.text << '\n'; +} + void print_package_help() { std::cout << R"(Usage: metabuilder-cli package [options] @@ -19,6 +32,10 @@ Commands: list List available packages with scripts run