61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
"""Task executors registry."""
|
|
|
|
from typing import Type
|
|
|
|
from app.executors.base import BaseExecutor, ExecutionResult
|
|
from app.executors.composite_executor import CompositeExecutor
|
|
from app.executors.docker_executor import DockerExecutor
|
|
from app.executors.echo_executor import EchoExecutor
|
|
from app.executors.env_update_executor import EnvUpdateExecutor
|
|
from app.executors.file_executor import FileExecutor
|
|
from app.executors.playwright_executor import PlaywrightExecutor
|
|
from app.executors.shell_executor import ShellExecutor
|
|
|
|
# Registry mapping task types to executor classes
|
|
EXECUTOR_REGISTRY: dict[str, Type[BaseExecutor]] = {
|
|
"ECHO": EchoExecutor,
|
|
"SHELL": ShellExecutor,
|
|
"FILE_WRITE": FileExecutor,
|
|
"ENV_UPDATE": EnvUpdateExecutor,
|
|
"DOCKER_RELOAD": DockerExecutor,
|
|
"COMPOSITE": CompositeExecutor,
|
|
"PLAYWRIGHT": PlaywrightExecutor,
|
|
}
|
|
|
|
|
|
def get_executor(task_type: str) -> BaseExecutor:
|
|
"""Get an executor instance for a task type.
|
|
|
|
Args:
|
|
task_type: The type of task to execute
|
|
|
|
Returns:
|
|
Executor instance
|
|
|
|
Raises:
|
|
ValueError: If task type is not registered
|
|
"""
|
|
if task_type not in EXECUTOR_REGISTRY:
|
|
raise ValueError(
|
|
f"Unknown task type: {task_type}. "
|
|
f"Available: {list(EXECUTOR_REGISTRY.keys())}"
|
|
)
|
|
|
|
executor_class = EXECUTOR_REGISTRY[task_type]
|
|
return executor_class()
|
|
|
|
|
|
__all__ = [
|
|
"BaseExecutor",
|
|
"ExecutionResult",
|
|
"EchoExecutor",
|
|
"ShellExecutor",
|
|
"FileExecutor",
|
|
"EnvUpdateExecutor",
|
|
"DockerExecutor",
|
|
"CompositeExecutor",
|
|
"PlaywrightExecutor",
|
|
"EXECUTOR_REGISTRY",
|
|
"get_executor",
|
|
]
|