{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended",
    "docker:enableMajor",
    ":disableRateLimiting",
    ":dependencyDashboard",
    ":semanticCommits",
    ":automergeBranch"
  ],
  "dependencyDashboard": true,
  "dependencyDashboardTitle": "Renovate Dashboard 🤖",
  "suppressNotifications": ["prEditedNotification", "prIgnoreNotification"],
  "rebaseWhen": "conflicted",
  //"schedule": ["on saturday"],
  "flux": {
    "fileMatch": [
      "(^|/)kubernetes/.+/.+\\.ya?ml(\\.j2)?$"
    ]
  },
  "helm-values": {
    "fileMatch": [
      "(^|/)kubernetes/.+/.+\\.ya?ml(\\.j2)?$"
    ]
  },
  "kubernetes": {
    "fileMatch": [
      "(^|/)kubernetes/.+/.+\\.ya?ml(\\.j2)?$"
    ]
  },
  "kustomize": {
    "fileMatch": [
      "(^|/)kustomization\\.ya?ml(\\.j2)?$"
    ]
  },
  // commit message topics
  "commitMessageTopic": "{{depName}}",
  "commitMessageExtra": "to {{newVersion}}",
  "commitMessageSuffix": "",
  // package rules
  "packageRules": [
    // automerge
    {
      "description": "Auto merge Github Actions",
      "matchManagers": ["github-actions"],
      "automerge": true,
      "automergeType": "branch",
      "ignoreTests": true,
      "matchUpdateTypes": ["minor", "patch"]
    },
    // groups
    {
      "description": "Flux Group",
      "groupName": "Flux",
      "matchPackagePatterns": ["flux"],
      "matchDatasources": ["docker", "github-tags"],
      "versioning": "semver",
      "group": {
        "commitMessageTopic": "{{{groupName}}} group"
      },
      "separateMinorPatch": true
    },
    {
      "description": "System Upgrade Controller Group",
      "groupName": "System Upgrade Controller",
      "matchPackagePatterns": ["rancher/system-upgrade-controller"],
      "matchDatasources": ["docker", "github-releases"],
      "group": {
        "commitMessageTopic": "{{{groupName}}} group"
      },
      "separateMinorPatch": true
    },
    // custom versioning
    {
      "description": "Use custom versioning for k0s/k3s",
      "matchDatasources": ["github-releases"],
      "versioning": "regex:^v(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<compatibility>\\+k.s)\\.?(?<build>\\d+)$",
      "matchPackagePatterns": ["k0s", "k3s"]
    },
    // commit message topics
    {
      "matchDatasources": ["helm"],
      "commitMessageTopic": "chart {{depName}}"
    },
    {
      "matchDatasources": ["docker"],
      "commitMessageTopic": "image {{depName}}"
    },
    // commit messages
    {
      "matchDatasources": ["docker"],
      "matchUpdateTypes": ["major"],
      "commitMessagePrefix": "feat(container)!: "
    },
    {
      "matchDatasources": ["docker"],
      "matchUpdateTypes": ["minor"],
      "semanticCommitType": "feat",
      "semanticCommitScope": "container"
    },
    {
      "matchDatasources": ["docker"],
      "matchUpdateTypes": ["patch"],
      "semanticCommitType": "fix",
      "semanticCommitScope": "container"
    },
    {
      "matchDatasources": ["docker"],
      "matchUpdateTypes": ["digest"],
      "semanticCommitType": "chore",
      "semanticCommitScope": "container"
    },
    {
      "matchDatasources": ["helm"],
      "matchUpdateTypes": ["major"],
      "commitMessagePrefix": "feat(helm)!: "
    },
    {
      "matchDatasources": ["helm"],
      "matchUpdateTypes": ["minor"],
      "semanticCommitType": "feat",
      "semanticCommitScope": "helm"
    },
    {
      "matchDatasources": ["helm"],
      "matchUpdateTypes": ["patch"],
      "semanticCommitType": "fix",
      "semanticCommitScope": "helm"
    },
    {
      "matchDatasources": ["github-releases", "github-tags"],
      "matchUpdateTypes": ["major"],
      "commitMessagePrefix": "feat(github-release)!: "
    },
    {
      "matchDatasources": ["github-releases", "github-tags"],
      "matchUpdateTypes": ["minor"],
      "semanticCommitType": "feat",
      "semanticCommitScope": "github-release"
    },
    {
      "matchDatasources": ["github-releases", "github-tags"],
      "matchUpdateTypes": ["patch"],
      "semanticCommitType": "fix",
      "semanticCommitScope": "github-release"
    },
    {
      "matchManagers": ["github-actions"],
      "matchUpdateTypes": ["major"],
      "commitMessagePrefix": "feat(github-action)!: "
    },
    {
      "matchManagers": ["github-actions"],
      "matchUpdateTypes": ["minor"],
      "semanticCommitType": "feat",
      "semanticCommitScope": "github-action"
    },
    {
      "matchManagers": ["github-actions"],
      "matchUpdateTypes": ["patch"],
      "semanticCommitType": "fix",
      "semanticCommitScope": "github-action"
    },
    // labels
    {
      "matchUpdateTypes": ["major"],
      "labels": ["type/major"]
    },
    {
      "matchUpdateTypes": ["minor"],
      "labels": ["type/minor"]
    },
    {
      "matchUpdateTypes": ["patch"],
      "labels": ["type/patch"]
    },
    {
      "matchDatasources": ["docker"],
      "addLabels": ["renovate/container"]
    },
    {
      "matchDatasources": ["helm"],
      "addLabels": ["renovate/helm"]
    },
    {
      "matchDatasources": ["github-releases", "github-tags"],
      "addLabels": ["renovate/github-release"]
    },
  ],
  // custom managers
  "customManagers": [
    {
      "customType": "regex",
      "description": "Process various other dependencies",
      "fileMatch": [
        "(^|/)kubernetes/.+\\.ya?ml(\\.j2)?$"
      ],
      "matchStrings": [
        // Example:
        //   k3s_release_version: "v1.27.3+k3s1"
        "datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( repository=(?<registryUrl>\\S+))?( extractVersion=(?<extractVersion>\\S+))?\n.*?\"(?<currentValue>.*)\"\n",
        // Example:
        //   - https://github.com/rancher/system-upgrade-controller/releases/download/v0.11.0/crd.yaml
        "datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)\n.*?-\\s(.*?)\/(?<currentValue>[^/]+)\/[^/]+\n",
      ],
      "datasourceTemplate": "{{#if datasource}}{{{datasource}}}{{else}}github-releases{{/if}}"
    }
  ]
}