diff --git a/.github/workflows/zed-package.yml b/.github/workflows/zed-package.yml new file mode 100644 index 0000000..8855031 --- /dev/null +++ b/.github/workflows/zed-package.yml @@ -0,0 +1,19 @@ +name: zed-package + +on: + pull_request: + push: + branches: [main] + +permissions: + contents: read + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - run: python3 scripts/check-zed-package.py diff --git a/scripts/check-zed-package.py b/scripts/check-zed-package.py new file mode 100755 index 0000000..3ad5f44 --- /dev/null +++ b/scripts/check-zed-package.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +from pathlib import Path +import sys +import tomllib + +root = Path(__file__).resolve().parents[1] +data = tomllib.loads((root / ".zpkg.toml").read_text(encoding="utf-8")) +expected = { + "led-dynamo/leddy-interfaces", + "led-dynamo/leddy-lib", + "led-dynamo/leddy-clients", +} +actual = set(data.get("dependencies", {})) +missing = expected - actual +unexpected = actual - expected +errors = [] +if data.get("package", {}).get("name") != "leddy-cli": + errors.append("package.name must be leddy-cli") +if missing: + errors.append("missing dependencies: " + ", ".join(sorted(missing))) +if unexpected: + errors.append("unexpected dependencies: " + ", ".join(sorted(unexpected))) +if errors: + print("Zed package validation failed:", file=sys.stderr) + for error in errors: + print(f" - {error}", file=sys.stderr) + raise SystemExit(1) +print("validated leddy-cli Zed dependency graph")