---
require:
  - rubocop-performance
  - rubocop-rspec
AllCops:
  NewCops: enable
  ExtraDetails: true
  DisplayStyleGuide: true
  TargetRubyVersion: '3.1'
  DisplayCopNames: true
  SuggestExtensions: false
  Exclude:
    - "bin/*"
    - ".vendor/**/*"
    - "**/Gemfile"
    - "**/Rakefile"
    - "pkg/**/*"
    - "spec/fixtures/**/*"
    - "vendor/**/*"
    - "**/Puppetfile"
    - "**/Vagrantfile"
    - "**/Guardfile"
Layout/LineLength:
  Description: People have wide screens, use them.
  Max: 200
RSpec/BeforeAfterAll:
  Description: Beware of using after(:all) as it may cause state to leak between tests.
    A necessary evil in acceptance testing.
  Exclude:
  - spec/acceptance/**/*.rb
RSpec/HookArgument:
  Description: Prefer explicit :each argument, matching existing module's style
  EnforcedStyle: each
RSpec/DescribeSymbol:
  Exclude:
  - spec/unit/facter/**/*.rb
Style/BlockDelimiters:
  Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
    be consistent then.
  EnforcedStyle: braces_for_chaining
Style/ClassAndModuleChildren:
  Description: Compact style reduces the required amount of indentation.
  EnforcedStyle: compact
Style/EmptyElse:
  Description: Enforce against empty else clauses, but allow `nil` for clarity.
  EnforcedStyle: empty
Style/FormatString:
  Description: Following the main puppet project's style, prefer the % format format.
  EnforcedStyle: percent
Style/FormatStringToken:
  Description: Following the main puppet project's style, prefer the simpler template
    tokens over annotated ones.
  EnforcedStyle: template
Style/Lambda:
  Description: Prefer the keyword for easier discoverability.
  EnforcedStyle: literal
Style/RegexpLiteral:
  Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
  EnforcedStyle: percent_r
Style/TernaryParentheses:
  Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
    on complex expressions for better readability, but seriously consider breaking
    it up.
  EnforcedStyle: require_parentheses_when_complex
Style/TrailingCommaInArguments:
  Description: Prefer always trailing comma on multiline argument lists. This makes
    diffs, and re-ordering nicer.
  EnforcedStyleForMultiline: comma
Style/TrailingCommaInArrayLiteral:
  Description: Prefer always trailing comma on multiline literals. This makes diffs,
    and re-ordering nicer.
  EnforcedStyleForMultiline: comma
Style/SymbolArray:
  Description: Using percent style obscures symbolic intent of array's contents.
  EnforcedStyle: brackets
RSpec/MessageSpies:
  EnforcedStyle: receive
Style/Documentation:
  Exclude:
  - lib/puppet/parser/functions/**/*
  - spec/**/*
Style/WordArray:
  EnforcedStyle: brackets
