# Defaults can be found here: https://github.com/bbatsov/rubocop/blob/master/config/default.yml

AllCops:
  TargetRubyVersion: 3
  NewCops: enable

Style/StringLiterals:
  EnforcedStyle: double_quotes
  Enabled: true

# kind_of? is a good way to check a type
Style/ClassCheck:
  EnforcedStyle: kind_of?

# specs sometimes have useless assignments, which is fine
Lint/UselessAssignment:
  Exclude:
    - '**/spec/**/*'

# We could potentially enable the 2 below:
Layout/FirstHashElementIndentation:
  Enabled: false

Layout/HashAlignment:
  Enabled: false

# HoundCI doesn't like this rule
Layout/DotPosition:
  Enabled: false

# We allow !! as it's an easy way to convert ot boolean
Style/DoubleNegation:
  Enabled: false

# Cop supports --auto-correct.
Lint/UnusedBlockArgument:
  Enabled: false

# We want to allow class Fastlane::Class
Style/ClassAndModuleChildren:
  Enabled: false

Metrics/AbcSize:
  Max: 60

# The %w might be confusing for new users
Style/WordArray:
  MinSize: 19

# raise and fail are both okay
Style/SignalException:
  Enabled: false

# Better too much 'return' than one missing
Style/RedundantReturn:
  Enabled: false

# Having if in the same line might not always be good
Style/IfUnlessModifier:
  Enabled: false

# and and or is okay
Style/AndOr:
  Enabled: false

# Configuration parameters: CountComments.
Metrics/ClassLength:
  Max: 350

Metrics/CyclomaticComplexity:
  Max: 17

# Configuration parameters: AllowURI, URISchemes.
Layout/LineLength:
  Max: 370

# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
  Max: 10

Metrics/PerceivedComplexity:
  Max: 18

# Sometimes it's easier to read without guards
Style/GuardClause:
  Enabled: false

# something = if something_else
# that's confusing
Style/ConditionalAssignment:
  Enabled: false

# Better to have too much self than missing a self
Style/RedundantSelf:
  Enabled: false

Metrics/MethodLength:
  Max: 60

# We're not there yet
Style/Documentation:
  Enabled: false

# Adds complexity
Style/IfInsideElse:
  Enabled: false

# danger specific

Style/BlockComments:
  Enabled: false

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented

# FIXME: 25
Metrics/BlockLength:
  Max: 345
  Exclude:
    - "**/*_spec.rb"

Style/MixinGrouping:
  Enabled: false

Naming/FileName:
  Enabled: false

Layout/HeredocIndentation:
  Enabled: false

Style/SpecialGlobalVars:
  Enabled: false

Style/PercentLiteralDelimiters:
  PreferredDelimiters:
    "%":  ()
    "%i": ()
    "%q": ()
    "%Q": ()
    "%r": "{}"
    "%s": ()
    "%w": ()
    "%W": ()
    "%x": ()

Security/YAMLLoad:
  Enabled: false