{
    extends: [
        "config:best-practices",
        "schedule:monthly",
        // Group updates to linters together in one PR
        "group:linters",
        ":semanticCommitsDisabled",
        ":preserveSemverRanges",
    ],
    dependencyDashboard: true,
    "labels": ["dependencies"],
    lockFileMaintenance: {
        enabled: true,
        automerge: true
    },
    "customManagers": [
      {
        "customType": "regex",
        "fileMatch": ["^rust-toolchain\\.toml?$"],
        "matchStrings": [
          "channel\\s*=\\s*\"(?<currentValue>\\d+\\.\\d+(\\.\\d+)?)\""
        ],
        "depNameTemplate": "rust",
        "packageNameTemplate": "rust-lang/rust",
        "datasourceTemplate": "github-releases"
      },
      {
        "customType": "regex",
        "fileMatch": ["^Justfile$"],
        "matchStrings": [
          // https://regex101.com/r/vOmY6R/1
          // Matching on word boundaries (\b) around start and end ensures we
          // match variations like "towncrier==1.2.3" as well as "pipx run
          // towncrier==1.2.3", adding some future proofness.
          "\".*\\btowncrier==(?<currentValue>.+?)\\b\""
        ],
        "depNameTemplate": "towncrier",
        "datasourceTemplate": "pypi"
      },
    ],
    packageRules: [
        {
            matchCategories: ["rust"],
            minimumReleaseAge: "3 days",
            automerge: true
        },
        {
            // pulldown-cmark and pulldown-cmark-to-mark must be updated in
            // lockstep in case of breaking changes, so it's best to group them
            // together.
            "matchPackageNames": ["pulldown-cmark*"],
            // pulldown-cmark is currently on a 0.x release series while
            // pulldown-cmark-to-cmark tends to bump the major version
            // component whenever pulldown-cmark creates a new release (which
            // increments the minor component). Renovate by default creates
            // separate PRs for major and minor bumps which fails to match up
            // with the grouping. Disabling this behavior ensures that both
            // packages are always updated together in a single PR.
            "separateMajorMinor": false,
            "groupName": "pulldown-cmark (group)"
        },
  ],
  ignorePaths: [
    // Auto-generated by cargo-dist (https://opensource.axo.dev/cargo-dist/)
    ".github/workflows/release.yml"
  ]
}
