---
# =============================================================================
# Ansible Lint Configuration
# =============================================================================
#
# This file configures ansible-lint for code quality checks.
#
# Run with:
#   ansible-lint                    # Lint all files
#   ansible-lint site.yml           # Lint specific playbook
#   ansible-lint roles/role_name/   # Lint specific role
#
# =============================================================================

# Use production profile for strict checking
profile: production

# Exclude paths
exclude_paths:
  - .cache/
  - .git/
  - .github/
  - molecule/
  - secrets/
  - stats/
  - inventories/*/host_vars/
  - inventories/*/group_vars/all/vault.yml
  - '*.vault'
  - '*.example'
  - tests/

# Skip specific rules
skip_list:
  # Allow latest for security packages (automatic updates)
  - package-latest

  # Allow risky-file-permissions for specific cases
  # (we use explicit permissions in our roles)
  # - risky-file-permissions

# Warn on these rules instead of failing
warn_list:
  - experimental
  - no-changed-when
  - command-instead-of-module
  - command-instead-of-shell

# Enable offline mode (don't check for new rules)
offline: false

# Strict mode - treat warnings as errors
# strict: true

# Mock modules and roles for linting
mock_modules:
  - community.general.nmcli
  - community.general.lvol
  - community.general.lvg
  - community.libvirt.virt

mock_roles:
  - common
  - security_baseline

# Enable progressive mode (incrementally adopt new rules)
progressive: false

# Configure specific rules
kinds:
  - yaml: "**/*.yaml"
  - yaml: "**/*.yml"
  - playbook: "**/playbooks/*.yml"
  - playbook: "**/plays/*.yml"
  - playbook: "site.yml"
  - tasks: "**/tasks/*.yml"
  - vars: "**/vars/*.yml"
  - meta: "**/meta/*.yml"
  - requirements: "**/requirements.yml"
  - handlers: "**/handlers/*.yml"
  - galaxy: "**/galaxy.yml"

# =============================================================================
# Rule Configuration
# =============================================================================

# Ignore line length for specific patterns
# rules:
#   line-length:
#     max: 160
#     allow-filter: true

# =============================================================================
# Usage Examples
# =============================================================================
#
# Lint entire project:
#   ansible-lint
#
# Lint specific playbook:
#   ansible-lint site.yml
#   ansible-lint playbooks/security_audit.yml
#
# Lint specific role:
#   ansible-lint roles/system_info/
#
# Auto-fix issues (where possible):
#   ansible-lint --fix
#
# List all rules:
#   ansible-lint -L
#
# Show rule documentation:
#   ansible-lint -T
#
# =============================================================================
