Files
metabuilder/frontends/cli
johndoe6345789 8053ff2bb1 Phase 4: Complete C++ component build and test verification
Build Results:
- DBAL Daemon:  Complete (8.9 MB), 34+ unit/integration/conformance tests all passing
- CLI Frontend:  Complete (1.2 MB), all commands verified and working
- Qt6 Frontend: 🟡 In progress (dependencies resolved, compiling from source)
- Media Daemon:  Blocked (source files incomplete, Phase 5 work)

Key Fixes:
- Sol2 compatibility: Updated lua_runner.cpp to use sol::lua_nil instead of sol::nil
- Qt6 dependencies: Removed unavailable libopenmpt/0.6.0, updated to working versions
- Media daemon: Fixed conanfile.txt dependency versions for compatibility

Test Results: 100% pass rate on all DBAL tests
- Client Tests: 24+ passing
- Query Tests: 3/3 passing
- Integration Tests: 3/3 passing (SQLite)
- Conformance Tests: 4/4 passing

Compiler: Apple Clang 17.0.0 with no warnings
Build system: CMake 4.2.1, Conan 2.24.0, Ninja 1.13.2

Production Readiness:
- DBAL Daemon: Production-ready (known: interactive mode has threading quirk, use --daemon flag)
- CLI Frontend: Production-ready
- Qt6 Frontend: Pending compilation completion

Documentation: Added comprehensive Phase 4 build report with test results, binary sizes, recommendations

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-21 02:04:24 +00:00
..

MetaBuilder CLI

This CLI targets MetaBuilder services via HTTP and includes a Lua runtime for executing package scripts. Uses Conan + CMake for dependency management and builds.

Requirements

  • Conan 2 (used for dependency resolution)
  • CMake 3.27+ (the Conan toolchain generator targets this minimum)
  • Ninja (build backend)
  • A running MetaBuilder frontend (defaults to http://localhost:3000)

Building

cd frontends/cli
conan install . --output-folder build --build missing
cmake -S . -B build -G Ninja
cmake --build build

Conan provisions these dependencies:

Running

The executable looks for METABUILDER_BASE_URL (default http://localhost:3000):

# API commands
./build/bin/metabuilder-cli auth session
./build/bin/metabuilder-cli user list

# Package commands (run from project root)
./build/bin/metabuilder-cli package list
./build/bin/metabuilder-cli package generate my_forum --category social --with-schema --entities Thread,Post
./build/bin/metabuilder-cli package run codegen_studio package_template get_categories

Commands

API Commands

metabuilder-cli auth session                    # Show current session
metabuilder-cli auth login <email> <password>   # Authenticate
metabuilder-cli user list                       # List users
metabuilder-cli user get <userId>               # Get user by ID
metabuilder-cli tenant list                     # List tenants
metabuilder-cli tenant get <tenantId>           # Get tenant by ID
metabuilder-cli dbal <subcommand>               # DBAL operations

Package Commands

metabuilder-cli package list                    # List packages with scripts
metabuilder-cli package run <pkg> <script>      # Run a Lua script from a package
metabuilder-cli package generate <id> [opts]    # Generate a new package

Generate Options

Option Description Default
--name <name> Display name Derived from package_id
--description <desc> Package description Auto-generated
--category <cat> Package category ui
--min-level <n> Minimum access level 0-6 2
--primary Package can own routes Yes
--dependency Package is dependency-only No
--with-schema Include database schema No
--entities <e1,e2> Entity names (comma-separated) None
--with-components Include component scaffolding No
--components <c1,c2> Component names None
--deps <d1,d2> Package dependencies None
--output <dir> Output directory ./packages
--dry-run Preview without writing No

Examples

# Generate a forum package with schema
metabuilder-cli package generate my_forum \
    --category social \
    --with-schema \
    --entities ForumThread,ForumPost,ForumReply

# Generate a UI widget as dependency
metabuilder-cli package generate stat_widget \
    --category ui \
    --dependency \
    --with-components \
    --components StatCard,StatChart

# Preview without creating files
metabuilder-cli package generate test_pkg --dry-run

Environment Variables

Variable Description Default
METABUILDER_BASE_URL API base URL http://localhost:3000
METABUILDER_PACKAGES Packages directory ./packages

Continuous Integration

Changes under frontends/cli/ trigger .github/workflows/ci/cli.yml, which:

  1. Runs Conan to install dependencies
  2. Configures and builds with CMake/Ninja
  3. Validates that metabuilder-cli --help exits cleanly