inherit_from: .rubocop_todo.yml
inherit_mode:
  merge:
    - Exclude

plugins:
  - rubocop-performance
  - rubocop-rake
  - rubocop-rspec

AllCops:
  TargetRubyVersion: 2.7
  NewCops: enable
  Exclude:
    - 'spec/shared/**/*'
    - 'spec/faas/**/*'
    - 'vendor/**/*'

Bundler:
  Enabled: true

Gemspec:
  Enabled: true

Layout:
  Enabled: true

Lint:
  Enabled: true

Metrics:
  Enabled: true

Naming:
  Enabled: true

Security:
  Enabled: true

Style:
  Enabled: true

# --------------------------------------
# Cops below this line set intentionally
# --------------------------------------

Bundler/OrderedGems:
  Enabled: false

Gemspec/OrderedDependencies:
  Enabled: false

Layout/SpaceInsideArrayLiteralBrackets:
  EnforcedStyle: space

Layout/SpaceInsidePercentLiteralDelimiters:
  Enabled: false

Lint/UselessConstantScoping:
  Enabled: false

Metrics/ClassLength:
  Max: 200

Metrics/ModuleLength:
  Enabled: false

Metrics/MethodLength:
  Max: 20

Naming/FileName:
  Exclude:
    - 'gemfiles/bson_4-stable.gemfile'

Naming/MethodParameterName:
  AllowedNames: [ id, op ]

Naming/PredicateMethod:
  Enabled: false

RSpec/BeforeAfterAll:
  Enabled: false

# Ideally, we'd use this one, too, but our tests have not historically followed
# this style and it's not worth changing right now, IMO
RSpec/DescribeClass:
  Enabled: false

RSpec/Eq:
  Enabled: false

Style/FetchEnvVar:
  Enabled: false

RSpec/ImplicitExpect:
  EnforcedStyle: is_expected

RSpec/IncludeExamples:
  Enabled: false

RSpec/IndexedLet:
  Enabled: false

RSpec/ExpectInLet:
  Enabled: false

RSpec/MultipleExpectations:
  Enabled: false

RSpec/MultipleMemoizedHelpers:
  Enabled: false

RSpec/NestedGroups:
  Enabled: false

RSpec/ReceiveMessages:
  Enabled: false

Style/Documentation:
  Exclude:
    - 'spec/**/*'

Style/FormatStringToken:
  Enabled: false

Style/ModuleFunction:
  EnforcedStyle: extend_self

Style/OptionalBooleanParameter:
  Enabled: false

Style/ParallelAssignment:
  Enabled: false

Style/TernaryParentheses:
  EnforcedStyle: require_parentheses_when_complex

Style/TrailingCommaInArrayLiteral:
  Enabled: false

Style/TrailingCommaInHashLiteral:
  Enabled: false

RSpec/ExampleLength:
  Max: 10

RSpec/MessageSpies:
  EnforcedStyle: receive

RSpec/NamedSubject:
  Enabled: false
