Initial commit

This commit is contained in:
Johnny
2026-04-05 18:56:26 +02:00
parent 9f5e146229
commit 751dc8892c
43 changed files with 4278 additions and 0 deletions

46
securecheck/models.py Normal file
View File

@@ -0,0 +1,46 @@
from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime
from typing import Callable, TYPE_CHECKING
if TYPE_CHECKING:
from .executor import ExecutionContext
TaskHandler = Callable[["ExecutionContext"], "TaskResult"]
@dataclass(frozen=True)
class TaskDefinition:
key: str
label: str
description: str
category: str
handler: TaskHandler
requires_root: bool = True
default_selected: bool = False
@dataclass
class TaskResult:
key: str
label: str
success: bool
changed: bool
started_at: datetime
finished_at: datetime
details: list[str] = field(default_factory=list)
error: str | None = None
@property
def duration_seconds(self) -> float:
return (self.finished_at - self.started_at).total_seconds()
@dataclass
class Scenario:
name: str
task_keys: list[str]
description: str = ""
builtin: bool = False