Set of tools I use to manage integration of plugins into the VCV Rack library repository.
- rack-manifest-validator.py
These tools are specifically written to run on GNU/Linux, which is the system I use mostly for integration of plugins in the Plugin Manager. These tools are written to operate on a local working copy of the Rack library repository.
Requires only the Python 3 standard library — no third-party dependencies.
Script to validate a single plugin's plugin.json manifest.
python3 ./rack-manifest-validator.py <PLUGIN_DIR>
Example:
- Validate the manifest for
modular80:
python3 ./rack-manifest-validator.py /src/library/repos/modular80
To validate every plugin in the library repository, loop over them at the caller level, e.g.:
for plugin in /src/library/repos/*/; do
python3 ./rack-manifest-validator.py "$plugin" || echo "FAILED: $plugin"
done
If the plugin directory is a git submodule of the library repository (i.e. .gitmodules exists
two directories up, at <LIBRARY_REPO_ROOT>/.gitmodules), the validator also checks that the
plugin's version was bumped and that no plugin/module slugs were removed or renamed since the
previously recorded submodule commit.
Unit tests live in test_rack_manifest_validator.py and use pytest. Since the system Python is
externally managed, install pytest into a local virtualenv:
python3 -m venv .venv
.venv/bin/pip install pytest
.venv/bin/python -m pytest test_rack_manifest_validator.py
All network and git calls are mocked; the tests do not require network access, though a few exercise real temporary git repositories/submodules to verify the version-bump and slug-change checks.