silverstripe / supported-modules

https://docs.silverstripe.org/en/project_governance/supported_modules/
BSD 3-Clause "New" or "Revised" License
0 stars 2 forks source link
hacktoberfest

Silverstripe CMS Supported Modules Metadata

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.

Format

There are several sections in the repositories.json file, denoting different categories of repositories:

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.

Adding a repo

You can easily retrieve the githubId via the following API call:

https://api.github.com/repos/my-org/my-repo