Metadata and some supporting PHP logic for determining which branches of various GitHub repositories relate to which versions of Silverstripe CMS.
Important
Only the main
branch of this repository is maintained. Stable tags must be manually created from the main
branch. There is no auto tagging via a GitHub action. All branches other than main
are legacy and should not be referenced going forward.
You can fetch the JSON by simply fetching the raw copy of repositories.json
file, e.g. https://raw.githubusercontent.com/silverstripe/supported-modules/main/repositories.json.
If you've included this module as a composer dependency then you can use SilverStripe\SupportedModules\MetaData::getAllRepositoryMetaData()
which will fetch the latest version of the JSON file from raw.githubusercontent.com. There is a local copy of repositories.json
in the module, though it is not guaranteed to be up to date, so only use this if fetching a fresh copy of this file is not viable.
There are several sections in the repositories.json
file, denoting different categories of repositories:
supportedModules
: Repositories representing supported modules. If cow cares about it, it should probably be in this category.workflow
: Repositories which hold GitHub actions and workflows.tooling
: Repositories used to help streamline Silverstripe CMS maintenancemisc
: All repositories we need to track which don't fit in one of the above categories.
Each of the above sections holds an array of JSON objects with the following data:
key | type | description |
---|---|---|
github |
String | Github repository name (incl. org) |
packagist |
String | Packagist name. Only relevant if the repo isn't registered in packagist - otherwise null. |
githubId |
Number | The id in Github. Used as a unique identifier. |
isCore |
Boolean | Is this considered a direct dependency of silverstripe/installer , silverstripe/recipe-cms or silverstripe/recipe-core ? (Only relevant for supported modules) |
lockstepped |
Boolean | Whether this is always given a new minor release in "lock step" with Silverstripe CMS as a whole. (Only relevant for supported modules) |
type |
String | One of "module", "recipe", "theme", or "other". (Only relevant for supported modules) |
majorVersionMapping |
Object | A map of major versions, with the Silverstripe CMS major release lines as object keys and an array of all matching major release lines for the repository as values. • The repository versions are branch names, but in most cases these will map to a major release line (e.g. "5" branch which represents the "5.x" release line) • If a "*" key is present it will be used for all CMS major release lines, and no other keys can be used• If a CMS major release line is missing, and the "*" key is not used, the repository should be ignored for that CMS major release line.• If the value is an empty array, the default branch should be used. |
You can easily retrieve the githubId
via the following API call:
https://api.github.com/repos/my-org/my-repo