Replaces LICENSE (GPLv3 -> AGPLv3) and prepends `SPDX-License-Identifier: AGPL-3.0-or-later` to every source file across decnet/, decnet_web/, tests/, scripts/, and tools/. Rationale: closes the GPLv3 ASP loophole so any party operating a modified DECNET as a network service must offer their modified source. Personal copyright (Samuel Paschuan) + inbound=outbound contributions make a future unilateral relicense infeasible. - LICENSE: full AGPL-3.0 text (gnu.org/licenses/agpl-3.0.txt) - COPYRIGHT: project copyright notice - tools/add_spdx_headers.py: idempotent header injector (shebang- and PEP 263-aware) Touches 1565 source files (.py, .ts, .tsx, .js, .jsx, .css, .sh). No behavior change; comments only.
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""Bus emit helper for DeckyLifecycle transitions.
|
|
|
|
DB is the source of truth (wizard polls ``GET /deckies/lifecycle?ids=``).
|
|
The bus is best-effort live notification — publish failures are logged
|
|
and swallowed via ``publish_safely``, never propagated.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from decnet.bus import topics as _topics
|
|
from decnet.bus.base import BaseBus
|
|
from decnet.bus.publish import publish_safely
|
|
|
|
|
|
async def emit_lifecycle(
|
|
bus: BaseBus | None,
|
|
*,
|
|
lifecycle_id: str,
|
|
decky_name: str,
|
|
operation: str,
|
|
status: str,
|
|
error: Optional[str] = None,
|
|
) -> None:
|
|
"""Publish ``decky.<name>.lifecycle`` with the current transition.
|
|
|
|
Payload keys: ``lifecycle_id``, ``operation``, ``status`` and
|
|
optionally ``error``. Documented in
|
|
``wiki-checkout/Service-Bus.md``.
|
|
"""
|
|
payload: dict = {
|
|
"lifecycle_id": lifecycle_id,
|
|
"operation": operation,
|
|
"status": status,
|
|
}
|
|
if error is not None:
|
|
payload["error"] = error
|
|
await publish_safely(
|
|
bus,
|
|
_topics.decky_lifecycle(decky_name),
|
|
payload,
|
|
event_type=_topics.DECKY_LIFECYCLE,
|
|
)
|