Commit 433c041
committed
feat: complete Phase 5 - integration & main entry point
Add main application entry point and integration layer:
src/index.ts (415 lines):
- Main entry point that orchestrates entire application lifecycle
- Initialize data directory and load configuration
- Parse CLI arguments for connection modes and config overrides
- Initialize all managers (Config, Context, Connection, Backend)
- Initialize all services (Polling, Camera, RTSP, Spoolman, Monitoring)
- Connect to printers based on CLI mode (last-used, all-saved, explicit, no-printers)
- Start WebUI server and verify successful startup
- Setup event forwarding from polling coordinator to WebUI
- Start polling for all connected printers
- Initialize camera proxies for each context
- Handle graceful shutdown on SIGINT/SIGTERM
src/utils/HeadlessArguments.ts (220 lines):
- CLI argument parser for standalone server configuration
- Support 4 connection modes:
* --last-used: Connect to last used printer
* --all-saved-printers: Connect to all saved printers
* --printers="IP:TYPE:CODE,...": Connect to specific printers
* --no-printers: Start WebUI without printer connections
- Support config overrides:
* --webui-port=PORT: Override WebUI port
* --webui-password=PASSWORD: Override WebUI password
- Argument validation with detailed error messages
src/utils/setup.ts (75 lines):
- Data directory initialization and validation
- Ensure data directory exists and is writable
- Support DATA_DIR environment variable for custom location
- Default location: ./data
tsconfig.json:
- Add src/index.ts to include array for compilation
Build output:
- dist/index.js: Main entry point (14.9KB compiled)
- dist/utils/HeadlessArguments.js: CLI parser (5.2KB)
- dist/utils/setup.js: Data directory setup (3.7KB)
Type check: 0 errors
Build: Success
Phase 5 Integration & Testing: Complete1 parent 60f81f2 commit 433c041
4 files changed
Lines changed: 698 additions & 0 deletions
0 commit comments