docling-ctl for test-ci makefile
This commit is contained in:
parent
65590f2a60
commit
adadb6ef0a
1 changed files with 91 additions and 0 deletions
91
scripts/docling_ctl.py
Normal file
91
scripts/docling_ctl.py
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Helper script to control docling-serve using DoclingManager for CI/testing."""
|
||||
|
||||
import sys
|
||||
import asyncio
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
# Add src to path so we can import DoclingManager
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
||||
|
||||
from tui.managers.docling_manager import DoclingManager
|
||||
|
||||
|
||||
async def start_docling(port: int = 5001, host: str = None, enable_ui: bool = False):
|
||||
"""Start docling-serve."""
|
||||
manager = DoclingManager()
|
||||
|
||||
if manager.is_running():
|
||||
print(f"Docling-serve is already running")
|
||||
status = manager.get_status()
|
||||
print(f"Endpoint: {status['endpoint']}")
|
||||
return 0
|
||||
|
||||
host_msg = f"{host}:{port}" if host else f"auto-detected host:{port}"
|
||||
print(f"Starting docling-serve on {host_msg}...")
|
||||
success, message = await manager.start(port=port, host=host, enable_ui=enable_ui)
|
||||
|
||||
if success:
|
||||
print(f"{message}")
|
||||
status = manager.get_status()
|
||||
print(f"Endpoint: {status['endpoint']}")
|
||||
print(f"PID: {status['pid']}")
|
||||
return 0
|
||||
else:
|
||||
print(f"{message}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
async def stop_docling():
|
||||
"""Stop docling-serve."""
|
||||
manager = DoclingManager()
|
||||
|
||||
if not manager.is_running():
|
||||
print("Docling-serve is not running")
|
||||
return 0
|
||||
|
||||
print("Stopping docling-serve...")
|
||||
success, message = await manager.stop()
|
||||
|
||||
if success:
|
||||
print(f"{message}")
|
||||
return 0
|
||||
else:
|
||||
print(f"{message}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
async def status_docling():
|
||||
"""Get docling-serve status."""
|
||||
manager = DoclingManager()
|
||||
status = manager.get_status()
|
||||
|
||||
print(f"Status: {status['status']}")
|
||||
if status['status'] == 'running':
|
||||
print(f"Endpoint: {status['endpoint']}")
|
||||
print(f"Docs: {status['docs_url']}")
|
||||
print(f"PID: {status['pid']}")
|
||||
|
||||
return 0 if status['status'] == 'running' else 1
|
||||
|
||||
|
||||
async def main():
|
||||
parser = argparse.ArgumentParser(description="Control docling-serve for CI/testing")
|
||||
parser.add_argument("command", choices=["start", "stop", "status"], help="Command to run")
|
||||
parser.add_argument("--port", type=int, default=5001, help="Port to run on (default: 5001)")
|
||||
parser.add_argument("--host", default=None, help="Host to bind to (default: auto-detect for containers)")
|
||||
parser.add_argument("--enable-ui", action="store_true", help="Enable UI")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "start":
|
||||
return await start_docling(port=args.port, host=args.host if args.host else None, enable_ui=args.enable_ui)
|
||||
elif args.command == "stop":
|
||||
return await stop_docling()
|
||||
elif args.command == "status":
|
||||
return await status_docling()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(asyncio.run(main()))
|
||||
Loading…
Add table
Reference in a new issue