{
  schedule: [
    'before 5am on the first day of the month',
  ],
  semanticCommits: 'enabled',
  configMigration: true,
  dependencyDashboard: true,
  ignorePaths: [
    '**/tests/**',
  ],
  // Ignore curl-sys, for now
  // https://github.com/rust-lang/cargo/issues/16357
  ignoreDeps: ['curl-sys'],
  customManagers: [
    {
      customType: 'regex',
      managerFilePatterns: [
        '/Cargo.toml$/',
      ],
      matchStrings: [
        '\\bMSRV:1\\b.*?(?<currentValue>\\d+\\.\\d+(\\.\\d+)?)',
        '(?<currentValue>\\d+\\.\\d+(\\.\\d+)?).*?\\bMSRV:1\\b',
      ],
      depNameTemplate: 'MSRV:1',  // Support 1 version of rustc
      packageNameTemplate: 'rust-lang/rust',
      datasourceTemplate: 'github-releases',
    },
    {
      customType: 'regex',
      managerFilePatterns: [
        '/Cargo.toml$/',
      ],
      matchStrings: [
        '\\bMSRV:3\\b.*?(?<currentValue>\\d+\\.\\d+(\\.\\d+)?)',
        '(?<currentValue>\\d+\\.\\d+(\\.\\d+)?).*?\\bMSRV:3\\b',
      ],
      depNameTemplate: 'MSRV:3',  // Support 3 versions of rustc
      packageNameTemplate: 'rust-lang/rust',
      datasourceTemplate: 'github-releases',
    },
    {
      customType: 'regex',
      managerFilePatterns: [
        '/^.github.workflows.main.yml$/',
      ],
      matchStrings: [
        'cargo-semver-checks.releases.download.v(?<currentValue>\\d+\\.\\d+(\\.\\d+)?)',
      ],
      depNameTemplate: 'cargo-semver-checks',
      packageNameTemplate: 'obi1kenobi/cargo-semver-checks',
      datasourceTemplate: 'github-releases',
    },
  ],
  packageRules: [
    {
      commitMessageTopic: 'MSRV (1 version)',
      matchManagers: [
        'custom.regex',
      ],
      matchDepNames: [
        'MSRV:1',
      ],
      extractVersion: '^(?<version>\\d+\\.\\d+)',  // Drop the patch version
      schedule: [
        '* * * * *',
      ],
      groupName: 'msrv',
    },
    {
      commitMessageTopic: 'MSRV (3 versions)',
      matchManagers: [
        'custom.regex',
      ],
      matchDepNames: [
        'MSRV:3',
      ],
      extractVersion: '^(?<version>\\d+\\.\\d+)',  // Drop the patch version
      schedule: [
        '* * * * *',
      ],
      minimumReleaseAge: '85 days',  // 2 releases back * 6 weeks per release * 7 days per week + 1
      internalChecksFilter: 'strict',
      groupName: 'msrv',
    },
    {
      commitMessageTopic: 'cargo-semver-checks',
      matchManagers: [
        'custom.regex',
      ],
      matchDepNames: [
        'cargo-semver-checks',
      ],
      extractVersion: '^v(?<version>\\d+\\.\\d+\\.\\d+)',
      schedule: [
        '* * * * *',
      ],
      internalChecksFilter: 'strict',
    },
    // Goals:
    // - Rollup safe upgrades to reduce CI runner load
    // - Have lockfile and manifest in-sync (implicit rules)
    {
      matchManagers: [
        'cargo',
      ],
      matchCurrentVersion: '>=0.1.0',
      matchUpdateTypes: [
        'patch',
      ],
      automerge: false,
      groupName: 'compatible',
    },
    {
      matchManagers: [
        'cargo',
      ],
      matchCurrentVersion: '>=1.0.0',
      matchUpdateTypes: [
        'minor',
      ],
      automerge: false,
      groupName: 'compatible',
    },
  ],
}
