require:
  - rubocop-rails

AllCops:
  TargetRubyVersion: 2.7
  Exclude:
  - 'test/**/*'
  - 'db/**/*'
  - 'app/views/**/*'
  - 'config/**/*'
  - 'bin/*'
  - 'Rakefile'
  - 'node_modules/**/*'
  - 'vendor/**/*'
  - 'lib/templates/**/*'

Bundler/OrderedGems:
  Enabled: false

Layout/AccessModifierIndentation:
  EnforcedStyle: indent

Layout/EmptyLineAfterMagicComment:
  Enabled: false

Layout/SpaceInsideHashLiteralBraces:
  EnforcedStyle: space

Metrics/AbcSize:
  Max: 100

Metrics/BlockLength:
  Max: 35
  Exclude:
    - 'lib/tasks/**/*'

Metrics/BlockNesting:
  Max: 3

Metrics/ClassLength:
  CountComments: false
  Max: 300

Metrics/CyclomaticComplexity:
  Max: 25

Metrics/LineLength:
  AllowURI: true
  Enabled: false

Metrics/MethodLength:
  CountComments: false
  Max: 55

Metrics/ModuleLength:
  CountComments: false
  Max: 200

Metrics/ParameterLists:
  Max: 5
  CountKeywordArgs: true

Metrics/PerceivedComplexity:
  Max: 20

Naming/MemoizedInstanceVariableName:
  Enabled: false

Rails:
  Enabled: true

Rails/EnumHash:
  Enabled: false

Rails/HasAndBelongsToMany:
  Enabled: false

Rails/SkipsModelValidations:
  Enabled: false

Rails/HttpStatus:
  Enabled: false

Rails/Exit:
  Exclude:
    - 'lib/mastodon/*'
    - 'lib/cli.rb'

Rails/HelperInstanceVariable:
  Enabled: false

Style/ClassAndModuleChildren:
  Enabled: false

Style/CollectionMethods:
  Enabled: true
  PreferredMethods:
    find_all: 'select'

Style/Documentation:
  Enabled: false

Style/DoubleNegation:
  Enabled: true

Style/FormatStringToken:
  Enabled: false

Style/FrozenStringLiteralComment:
  Enabled: true

Style/GuardClause:
  Enabled: false

Style/Lambda:
  Enabled: false

Style/PercentLiteralDelimiters:
  PreferredDelimiters:
    '%i': '()'
    '%w': '()'

Style/PerlBackrefs:
  AutoCorrect: false

Style/RegexpLiteral:
  Enabled: false

Style/SymbolArray:
  Enabled: false

Style/TrailingCommaInArrayLiteral:
  EnforcedStyleForMultiline: 'comma'

Style/TrailingCommaInHashLiteral:
  EnforcedStyleForMultiline: 'comma'
