AllCops:
  TargetRubyVersion: 2.5
  NewCops: enable

Metrics/ClassLength:
  CountAsOne:
    - heredoc
  Exclude:
    - test/*

Metrics/MethodLength:
  Exclude:
    - test/*

Metrics/BlockLength:
  Exclude:
    - test/*

Metrics/AbcSize:
  Exclude:
    - test/*

Metrics/ParameterLists:
  Max: 8

Naming/MethodParameterName:
  AllowNamesEndingInNumbers: false
  AllowedNames:
    - io
    - m
    - e
    - q
    - s
    - k
    - v
    - ex
    - tx
    - id
    - iq
    - db
    - to
    - tn

Layout/IndentationStyle:
  Enabled: false
  EnforcedStyle: tabs
  IndentationWidth: 2

Layout/IndentationWidth:
  Width: 1 # one tab

Layout/LineLength:
  Max: 80
  Exclude:
    - Gemfile

Layout/EndAlignment:
  EnforcedStyleAlignWith: start_of_line

Layout/SpaceAroundEqualsInParameterDefault:
  EnforcedStyle: no_space

Layout/AccessModifierIndentation:
  EnforcedStyle: outdent

Layout/FirstParameterIndentation:
  EnforcedStyle: consistent

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented

Style/AccessModifierDeclarations:
  Enabled: false

Style/ArrayCoercion:
  Enabled: false

Style/StringLiterals:
  EnforcedStyle: double_quotes

Style/NumericLiterals:
  Enabled: false

Style/SymbolArray:
  EnforcedStyle: brackets

Style/WordArray:
  EnforcedStyle: brackets

Style/Documentation:
  Enabled: false

Style/DoubleNegation:
  EnforcedStyle: allowed_in_returns
  Enabled: false

Style/ParallelAssignment:
  Enabled: false

Style/PerlBackrefs:
  Enabled: false

Style/SpecialGlobalVars:
  EnforcedStyle: use_perl_names

Style/RegexpLiteral:
  EnforcedStyle: slashes
  AllowInnerSlashes: true

Lint/OutOfRangeRegexpRef:
  Enabled: false

Lint/MissingSuper:
  Enabled: false

Lint/ConstantDefinitionInBlock:
  AllowedMethods:
    - when_ready

Style/BlockDelimiters:
  EnforcedStyle: semantic
  AllowBracesOnProceduralOneLiners: true
  ProceduralMethods:
    - execute_command
    - new

Style/MultilineBlockChain:
  Enabled: false

Layout/FirstArgumentIndentation:
  EnforcedStyle: consistent

Layout/FirstArrayElementIndentation:
  EnforcedStyle: consistent

Style/FormatString:
  EnforcedStyle: percent

Style/FormatStringToken:
  EnforcedStyle: unannotated

Style/FrozenStringLiteralComment:
  Exclude:
    - forms/**/*.rb

Style/RescueModifier:
  Enabled: false

Naming/AccessorMethodName:
  Enabled: false
