Files
renovate/lib/modules/datasource/nextcloud
Sebastian Poxhofer 1e6ffa8171 refactor(datasource): add cached() helper to the Datasource base class (#46102)
Every datasource that caches its releases hand-wrote the same
`withCache({ namespace: `datasource-${id}`, ... }, () => this._getReleases(config))`
wrapper, repeating the namespace literal and using underscore-prefixed
method names that `docs/development/best-practices.md` discourages.

Add `Datasource.cacheNamespace` (derived from the datasource id) and a
protected `Datasource.cached()` helper that defaults `namespace` to it,
exporting `CachedOptions` from `with-cache.ts`. Migrate 29 datasources
onto the helper, dropping their namespace literals, the static
`cacheNamespace` field in `github-digest`, and renaming the wrapped
`_getX` methods to `fetchX`.

Behaviour change: `golang-version` used the constant cache key `'all'`
while declaring `customRegistrySupport = true`, so a custom registryUrl
shared the cache entry with the default one. The key is now
`${config.registryUrl}`, which invalidates existing entries once.
2026-09-22 19:30:25 +00:00
..

This datasource finds Nextcloud application updates from Nextcloud feeds.

By default, Renovate has no default registry url for this datasource. You need to override the default behavior with the registryUrls config option. For example:

{
  "packageRules": [
    {
      "matchDatasources": ["nextcloud"],
      "registryUrls": [
        "https://apps.nextcloud.com/api/v1/platform/30.0.0/apps.json"
      ]
    }
  ]
}

Additionally, if you want Renovate to automatically update the platform version, you can create a custom manager. For example:

{
  "customManagers": [
    {
      "customType": "regex",
      "managerFilePatterns": ["/(^|/)renovate.json$/"],
      "matchStrings": [
        "https://apps.nextcloud.com/api/v1/platform/(?<currentValue>\\d+\\.\\d+\\.\\d+)/apps.json"
      ],
      "depNameTemplate": "nextcloud/server",
      "datasourceTemplate": "github-releases"
    }
  ]
}