37 lines
827 B
Python
Raw Normal View History

import time
from contextlib import AbstractContextManager
2024-01-12 11:12:12 +08:00
from lib.ide_service import IDEService
2024-01-12 11:12:12 +08:00
2024-01-12 11:12:12 +08:00
class Step(AbstractContextManager):
"""
Show a running step in the TUI.
ChatMark syntax:
```Step
# Something is running...
some details...
```
Usage:
with Step("Something is running..."):
print("some details...")
"""
def __init__(self, title: str):
self.title = title
self.enter_time = time.time()
2024-01-12 11:12:12 +08:00
def __enter__(self):
print(f"\n```Step\n# {self.title}", flush=True)
print("\n```", flush=True)
2024-01-12 11:12:12 +08:00
def __exit__(self, exc_type, exc_val, exc_tb):
# close the step
end_time = time.time()
IDEService().ide_logging(
"debug", f"Step {self.title} took {end_time - self.enter_time:.2f} seconds"
)