You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.2 KiB
Python
101 lines
2.2 KiB
Python
from pathlib import Path
|
|
|
|
|
|
def project_root() -> Path:
|
|
"""Returns the project root (parent of the gimme_job package directory)."""
|
|
return Path(__file__).parent.parent.parent
|
|
|
|
|
|
def workspace_dir() -> Path:
|
|
return project_root() / "workspace"
|
|
|
|
|
|
def sites_dir() -> Path:
|
|
return project_root() / "sites"
|
|
|
|
|
|
def db_path() -> Path:
|
|
import os
|
|
db = os.environ.get("GIMME_JOB_DB_PATH", "gimme_job.db")
|
|
p = Path(db)
|
|
if not p.is_absolute():
|
|
p = project_root() / p
|
|
return p
|
|
|
|
|
|
def chrome_profile_dir(name: str = "JobAgent") -> Path:
|
|
return workspace_dir() / "chrome-profiles" / name
|
|
|
|
|
|
def captures_dir() -> Path:
|
|
return workspace_dir() / "captures"
|
|
|
|
|
|
def traces_dir() -> Path:
|
|
return workspace_dir() / "traces"
|
|
|
|
|
|
def screenshots_dir() -> Path:
|
|
return workspace_dir() / "screenshots"
|
|
|
|
|
|
def dom_dir() -> Path:
|
|
return workspace_dir() / "dom"
|
|
|
|
|
|
def manifests_dir() -> Path:
|
|
return workspace_dir() / "manifests"
|
|
|
|
|
|
def generated_dir() -> Path:
|
|
return workspace_dir() / "generated"
|
|
|
|
|
|
def logs_dir() -> Path:
|
|
return workspace_dir() / "logs"
|
|
|
|
|
|
def reports_dir() -> Path:
|
|
return workspace_dir() / "reports"
|
|
|
|
|
|
def trace_path(site_id: str, run_id: str) -> Path:
|
|
return traces_dir() / f"{site_id}_{run_id}.zip"
|
|
|
|
|
|
def screenshot_path(site_id: str, run_id: str) -> Path:
|
|
return screenshots_dir() / f"{site_id}_{run_id}.png"
|
|
|
|
|
|
def dom_snapshot_path(site_id: str, run_id: str) -> Path:
|
|
return dom_dir() / f"{site_id}_{run_id}.html"
|
|
|
|
|
|
def html_dump_path(site_id: str, suffix: str = "learn") -> Path:
|
|
return dom_dir() / f"{site_id}_{suffix}.html"
|
|
|
|
|
|
def a11y_snapshot_path(site_id: str, suffix: str = "learn") -> Path:
|
|
return dom_dir() / f"{site_id}_{suffix}_a11y.json"
|
|
|
|
|
|
def learn_screenshot_path(site_id: str) -> Path:
|
|
return screenshots_dir() / f"{site_id}_learn.png"
|
|
|
|
|
|
def ensure_workspace_dirs() -> None:
|
|
"""Create all workspace subdirectories."""
|
|
for d in [
|
|
workspace_dir(),
|
|
chrome_profile_dir(),
|
|
captures_dir(),
|
|
traces_dir(),
|
|
screenshots_dir(),
|
|
dom_dir(),
|
|
manifests_dir(),
|
|
generated_dir(),
|
|
logs_dir(),
|
|
reports_dir(),
|
|
]:
|
|
d.mkdir(parents=True, exist_ok=True)
|