#
# PSRule for Azure configuration
#

# Please see the documentation for all configuration options:
# https://aka.ms/ps-rule/options
# https://aka.ms/ps-rule-azure/options

# Configure binding for local rules.
binding:
  preferTargetInfo: true
  targetType:
    - type
    - resourceType

# Do not warn if an Azure resource or related object has no rules.
execution:
  unprocessedObject: Ignore

# Require minimum versions of modules.
requires:
  PSRule: '@pre >=2.9.0'
  PSRule.Rules.Azure: '@pre >=1.34.2'

# Add PSRule v3 format configuration
format:
  bicep:
    type:
      - '.bicep'
    enabled: true
  bicepparam:
    type:
      - '.bicepparam'
    enabled: true

# Use PSRule for Azure.
include:
  module:
    - PSRule.Rules.Azure

# Configure the output culture for recommendations.
output:
  culture:
    - 'en-US'

input:
  fileObjects: true
  pathIgnore:
    # Ignore other files in the repository.
    - '**'

    # Include deployments.
    - '!deployments/**/*.bicepparam'
    - '!deployments/**/deploy.bicep'

    # Include module tests.
    - '!modules/**/*.tests.bicep'

configuration:
  # Enable automatic expansion of Azure parameter files.
  AZURE_PARAMETER_FILE_EXPANSION: true

  # Enable automatic expansion of Azure Bicep source files.
  AZURE_BICEP_FILE_EXPANSION: true
  AZURE_BICEP_PARAMS_FILE_EXPANSION: true

  # Configures the number of seconds to wait for build Bicep files.
  AZURE_BICEP_FILE_EXPANSION_TIMEOUT: 10

  # Enable Bicep CLI checks.
  AZURE_BICEP_CHECK_TOOL: true

  # Configure the minimum version of the Bicep CLI.
  AZURE_BICEP_MINIMUM_VERSION: '0.25.53'

  AZURE_DEPLOYMENT_NONSENSITIVE_PARAMETER_NAMES:
    - keys

# Suppression ignores rules for a specific Azure resource by name.
suppression:
  Azure.KeyVault.Logs:
    - kvtest001
  Azure.Storage.BlobPublicAccess:
    - sttest001
