A reusable GitHub Action that validates manifest.json files for RotorHazard plugins. It checks for missing fields, invalid formats, and unsupported values, and logs validation errors directly in GitHub Actions logs using GitHub-friendly annotations.
- β
Schema validation for keys in
manifest.json - β
Plugin repository structure validation
- π Presence of
custom_pluginsfolder - π Presence of single plugin domain folder
- π Presence of
manifest.jsonfile
- π Presence of
- π¨ GitHub Action annotations for validation errors
β οΈ Warnings for missing required fields- π³ Docker image for local testing (manual or pre-commit)
- π Validates for example:
- domain format (e.g., lowercase letters, numbers, underscores)
- version semver format (e.g.,
X.Y.Z) - dependencies using the version specifiers format (e.g.,
==X.Y.Z) - documentation_uri URL format
Create a file .github/workflows/validate.yml in your plugin repository with the following content:
name: Validate Plugin Manifest
on:
push:
pull_request:
jobs:
validate:
name: Run RHFest validation
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Run RHFest validation
uses: docker://ghcr.io/rotorhazard/rhfest-action:v3Needs Docker installed
RHFest is available as a Docker image, which makes it easy to test locally without installing any dependencies. To test your RotorHazard plugin repository, you can use the following command:
docker run --rm -v "$(pwd)":/repo ghcr.io/rotorhazard/rhfest-action:latestHow to setup the development environment.
You need the following tools to get started:
- Clone the repository
- Install all dependencies with UV. This will create a virtual environment and install all dependencies
uv sync- Setup the pre-commit check, you must run this inside the virtual environment
uv run pre-commit install- Run the application
uv run python rhfest/core.pyAs this repository uses the pre-commit framework, all changes are linted and tested with each commit. You can run all checks and tests manually, using the following command:
uv run pre-commit run --all-filesTo manual run only on the staged files, use the following command:
uv run pre-commit runTo build the Docker image locally, run the following command:
docker build -t rhfest-action:latest .To run the Docker image, use the following command:
docker run --rm -v "$(pwd)":/repo rhfest-action:latestThis project was inspired by:
- Manifest validation in HACS
- Manifest validation (Hassfest) in Home Assistant
Distributed under the MIT License. See LICENSE for more information.