ferrosoft.cli package

CLI entry points for the Ferrosoft platform.

Registered in pyproject.toml under [project.scripts]:

Submodules

ferrosoft.cli.dumpconfig module

platform-dumpconfig — print the resolved Ferrosoft configuration.

Reads and merges all YAML config files listed in the FERROSOFT_CONFIG environment variable (colon-separated paths, defaulting to settings.yml), applies environment-block overrides for the active FERROSOFT_ENV, and prints the resulting dictionary as YAML to stdout.

Useful for debugging configuration issues or verifying that variable substitution (@ {env[…]} / @ {settings[…]}) resolves correctly.

ferrosoft.cli.dumpconfig.main()[source]

Read all config files and print the merged result as YAML.

ferrosoft.cli.manage module

platform-manage — Django management command wrapper.

Thin shim around django.core.management.execute_from_command_line() that sets the default DJANGO_SETTINGS_MODULE to ferrosoft.container.settings and configures root logging from the FERROSOFT_LOG_LEVEL environment variable (defaults to INFO).

Usage:

platform-manage <subcommand> [options]

All standard Django management commands (migrate, shell, createsuperuser, …) plus any custom commands registered by installed Ferrosoft apps are available through this entry point.

ferrosoft.cli.manage.main()[source]

Configure Django settings and logging, then dispatch to the requested management command.

ferrosoft.cli.server module

platform-server — ASGI server launcher for the Ferrosoft platform.

Builds an argument list for either granian (default) or uvicorn and replaces the current process via os.execvp(), so the chosen server becomes PID 1-compatible in container deployments.

Network modes

unix (default)

Listen on a Unix-domain socket (--socket, default /run/platform.sock). Suitable for reverse-proxy setups (nginx, Caddy) where the proxy and app share a filesystem namespace.

tcp

Listen on a TCP address/port (--address / --port). Suitable for direct exposure or Docker-based deployments where socket sharing is impractical.

CLI synopsis:

platform-server [--impl {granian,uvicorn}]
                [-n {unix,tcp}]
                [-S SOCKET] [-a ADDRESS] [-p PORT]
                [-w WORKERS] [-R]
ferrosoft.cli.server.main()[source]

Parse CLI arguments and exec the chosen ASGI server process.

This function never returns on success — it calls os.execvp() to replace the current process with the server binary. On argument error or unsupported --impl value it exits with a non-zero status code.