require:
  - rubocop-rails
AllCops:
  DisplayCopNames: true
  CacheRootDirectory: '.git'
  Exclude:
    - 'config/**/*'
    - 'vendor/**/*'
    - 'db/schema.rb'
    - 'db/seeds.rb'
    - 'bin/**/*'
    - 'node_modules/**/*'
    - coverage/**/*
  TargetRubyVersion: 3.1
  NewCops: enable

Rails:
  Enabled: true

Rails/InverseOf:
  Enabled: false


### Lint

Lint/NestedMethodDefinition:
  Exclude:
    - api/sinatra/**/*

Lint/MissingSuper:
  Exclude:
    - app/components/**/*


### Metrics

Metrics/AbcSize:
  Enabled: false

Layout/LineLength:
  Enabled: false

Metrics/MethodLength:
  Enabled: false

Metrics/BlockLength:
  Enabled: false

Metrics/ClassLength:
  Enabled: false

Metrics/CyclomaticComplexity:
  Enabled: false

Metrics/PerceivedComplexity:
  Enabled: false

Metrics/ModuleLength:
  Enabled: false


### Style / Layout

#### Hash
Layout/HashAlignment:
  EnforcedColonStyle: table
  EnforcedHashRocketStyle: table

Style/HashSyntax:
  EnforcedStyle: ruby19_no_mixed_keys

Style/HashTransformKeys:
  Enabled: false

Style/HashTransformValues:
  Enabled: false

Layout/MultilineOperationIndentation:
  Description: Checks indentation of binary operations that span more than one line.
  EnforcedStyle: indented

#### Rest
Style/Documentation:
  Enabled: false

Style/DoubleNegation:
  Enabled: false

Style/ExponentialNotation:
  # https://docs.rubocop.org/rubocop/cops_style.html#styleexponentialnotation
  EnforcedStyle: engineering

Style/NumericLiterals:
  Description: Add underscores to large numeric literals to improve their readability.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics
  Enabled: false

Style/PerlBackrefs:
  Enabled: false

Style/RaiseArgs:
  EnforcedStyle: compact

Style/RegexpLiteral:
  Enabled: false

Style/SignalException:
  EnforcedStyle: only_raise

Style/StringLiterals:
  EnforcedStyle: double_quotes

Style/OptionalBooleanParameter:
  Enabled: false

Style/ClassAndModuleChildren:
  Enabled: false

Style/RescueStandardError:
  Enabled: false

Style/Encoding:
  Enabled: false

Style/EndlessMethod:
  EnforcedStyle: allow_always

Style/TrailingCommaInHashLiteral:
  EnforcedStyleForMultiline: consistent_comma

Style/TrailingCommaInArguments:
  EnforcedStyleForMultiline: consistent_comma

Style/RedundantSelf:
  Exclude:
    - app/models/**/*