ores.shell.application

Table of Contents

1. Diagram

ores.shell.application component diagram

Figure 1: ores.shell.application

2. Summary

ores.shell.application is the runnable part of the shell. It owns the process entry point, the Boost.ProgramOptions parser and the options struct it fills, the host that builds the REPL session, the repl loop, and the script_runner that replays a .ores script. It also holds the command units that register the shell's menus, and builds ores.shell.exe.

The command units are grouped by the domain they project. Each unit names the domain it belongs to, and a later wave moves it into its own ores.shell.<domain> part. Until then they all live here.

3. Inputs

  • CLI arguments: server URL, username, password, auto-login flag.
  • Config file with connection and credential defaults.
  • Interactive REPL commands typed at the prompt, or a .ores script file.
  • Domain protocol types from every linked ores.<domain>.api library.

4. Outputs

  • NATS request messages to domain services.
  • Formatted text output of query results to stdout.
  • ores.shell.exe — the shell executable.

5. Entry points

  • src/main.cpp — process entry point.
  • src/config/ — CLI argument parsing and configuration loading.
  • src/app/host.cpp — session and menu wiring.
  • src/app/repl.cpp — the REPL loop.
  • src/app/script_runner.cpp — non-interactive script replay.
  • src/app/commands/ — one unit per domain menu.

6. Dependencies

  • ores.shell.api — argument parsing, feedback, pagination, request helpers.
  • ores.nats — NATS transport for service calls.
  • ores.iam.api, ores.refdata.api, ores.trading.api, and the remaining ores.<domain>.api libraries — NATS protocol types for the command units.
  • Boost.ProgramOptions — CLI argument parsing.

7. See also

  • ores.shell — the composite this part belongs to.
  • Shell recipes — the how-to recipes for ores-shell usage, and the single source of truth for the generated .ores script library (projects/ores.shell/scripts/library/).

Emacs 29.3 (Org mode 9.6.15)