86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
# Copyright: (c) 2025, Luca Bilke <luca@bil.ke>
|
|
# MIT License (see LICENSE)
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
if TYPE_CHECKING:
|
|
from ansible_collections.snailed.ez_docker.plugins.module_utils.models import State
|
|
|
|
DOCUMENTATION = """
|
|
homepage:
|
|
description:
|
|
- Configuration for homepage labels.
|
|
type: list
|
|
elements: dict
|
|
suboptions:
|
|
name:
|
|
description:
|
|
- Name to set on dashboard.
|
|
- Defaults to name of service.
|
|
type: str
|
|
href:
|
|
description:
|
|
- HREF to set on dashboard.
|
|
type: str
|
|
icon:
|
|
description:
|
|
- URL to an image to use as icon.
|
|
type: str
|
|
description:
|
|
description:
|
|
- Description text to set on dashboard.
|
|
type: str
|
|
group:
|
|
description:
|
|
- Group to place service under on dashboard.
|
|
type: str
|
|
widget:
|
|
description:
|
|
- Widget configuration.
|
|
- See U(https://gethomepage.dev/configs/services/) for more info.
|
|
type: dict
|
|
"""
|
|
|
|
EXTRA_ARGS = {
|
|
"name": {"type": "str"},
|
|
"href": {"type": "str"},
|
|
"icon": {"type": "str"},
|
|
"description": {"type": "str"},
|
|
"group": {"type": "str"},
|
|
"widget": {"type": "dict"},
|
|
}
|
|
|
|
|
|
def helper(_state: State, service_name: str, params: dict[str, Any]) -> dict[str, Any]:
|
|
name: str = params.get("name", service_name)
|
|
href: str | None = params.get("href")
|
|
icon: str | None = params.get("icon")
|
|
description: str | None = params.get("description")
|
|
group: str | None = params.get("group")
|
|
widget: dict[str, str] | None = params.get("widget")
|
|
|
|
labels: dict[str, Any] = {
|
|
"homepage.name": name,
|
|
}
|
|
|
|
if href:
|
|
labels["homepage.href"] = href
|
|
|
|
if icon:
|
|
labels["homepage.icon"] = icon
|
|
|
|
if description:
|
|
labels["homepage.description"] = description
|
|
|
|
if group:
|
|
labels["homepage.group"] = group
|
|
|
|
if widget:
|
|
for k, v in widget.items():
|
|
labels[f"homepage.widget.{k}"] = v
|
|
|
|
return {
|
|
"labels": labels,
|
|
}
|