Files
EmbeddingBuddy/src/embeddingbuddy/cli.py
Austin Godber d66a20ddda
Some checks failed
Security Scan / dependency-check (push) Successful in 43s
Security Scan / security (push) Successful in 47s
Test Suite / lint (push) Failing after 29s
Test Suite / test (3.11) (push) Successful in 1m28s
Test Suite / build (push) Has been skipped
rework server startup and cli
This changes the dockerfile as well.
2025-10-01 19:04:27 -07:00

75 lines
2.2 KiB
Python

"""
Lightweight CLI entry point for EmbeddingBuddy.
This module provides a fast command-line interface that only imports
heavy dependencies when actually needed by subcommands.
"""
import argparse
import sys
def main():
"""Main CLI entry point with minimal imports for fast help text."""
parser = argparse.ArgumentParser(
prog="embeddingbuddy",
description="EmbeddingBuddy - Interactive embedding visualization tool",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
embeddingbuddy serve # Production mode (no debug, no auto-reload)
embeddingbuddy serve --dev # Development mode (debug + auto-reload)
embeddingbuddy serve --debug # Debug logging only (no auto-reload)
embeddingbuddy serve --port 8080 # Custom port
embeddingbuddy serve --host 0.0.0.0 # Bind to all interfaces
"""
)
subparsers = parser.add_subparsers(
dest="command",
help="Available commands",
metavar="<command>"
)
# Serve subcommand
serve_parser = subparsers.add_parser(
"serve",
help="Start the web server",
description="Start the EmbeddingBuddy web server for interactive visualization"
)
serve_parser.add_argument(
"--host",
default=None,
help="Host to bind to (default: 127.0.0.1)"
)
serve_parser.add_argument(
"--port",
type=int,
default=None,
help="Port to bind to (default: 8050)"
)
serve_parser.add_argument(
"--dev",
action="store_true",
help="Development mode: enable debug logging and auto-reload"
)
serve_parser.add_argument(
"--debug",
action="store_true",
help="Enable debug logging (no auto-reload)"
)
args = parser.parse_args()
if args.command == "serve":
# Only import heavy dependencies when actually running serve
from embeddingbuddy.app import serve
serve(host=args.host, port=args.port, dev=args.dev, debug=args.debug)
else:
# No command specified, show help
parser.print_help()
sys.exit(0)
if __name__ == "__main__":
main()