inherit_from: ./.rubocop_shared.yml

# enable all formulae audits
FormulaAudit:
  Enabled: true

# enable all formulae strict audits
FormulaAuditStrict:
  Enabled: true

# enable all pending rubocops
AllCops:
  NewCops: enable

# don't allow cops to be disabled in formulae
Style/DisableCopsWithinSourceCodeDirective:
  Enabled: true

# make our hashes consistent
Layout/HashAlignment:
  EnforcedHashRocketStyle: table
  EnforcedColonStyle: table

# `system` is a special case and aligns on second argument
Layout/ArgumentAlignment:
  Enabled: false

# this is a bit less "floaty"
Layout/CaseIndentation:
  EnforcedStyle: end

# this is a bit less "floaty"
Layout/EndAlignment:
  EnforcedStyleAlignWith: start_of_line

# conflicts with DSL-style path concatenation with `/`
Layout/SpaceAroundOperators:
  Enabled: false

# layout is not configurable (https://github.com/rubocop-hq/rubocop/issues/6254).
Layout/RescueEnsureAlignment:
  Enabled: false

# favour parens-less DSL-style arguments
Lint/AmbiguousBlockAssociation:
  Enabled: false

# so many of these in formulae and can't be autocorrected
# TODO: fix these as `ruby -w` complains about them.
Lint/AmbiguousRegexpLiteral:
  Enabled: false

# so many of these in formulae and can't be autocorrected
Lint/ParenthesesAsGroupedExpression:
  Enabled: false

# most metrics don't make sense to apply for formulae/taps
Metrics/AbcSize:
  Enabled: false
Metrics/ClassLength:
  Enabled: false
Metrics/CyclomaticComplexity:
  Enabled: false
Metrics/MethodLength:
  Enabled: false
Metrics/ModuleLength:
  Enabled: false
Metrics/PerceivedComplexity:
  Enabled: false

# GitHub diff UI wraps beyond 118 characters
Layout/LineLength:
  Max: 118
  # ignore manpage comments and long single-line strings
  IgnoredPatterns: ['#: ', ' url "', ' mirror "', ' plist_options :']

# most of our APIs are internal so don't require docs
Style/Documentation:
 Enabled: false

# don't want this for formulae but re-enabled for Library/Homebrew
Style/FrozenStringLiteralComment:
  Enabled: false

# potential for errors in formulae too high with this
Style/GuardClause:
  Enabled: false

# depends_on a: :b looks weird in formulae.
Style/HashSyntax:
  EnforcedStyle: hash_rockets
  Exclude:
  - '**/Guardfile'
  - '**/cmd/**/*.rb'
  - '**/lib/**/*.rb'
  - '**/spec/**/*.rb'

# autocorrectable and more readable
Style/HashEachMethods:
  Enabled: true
Style/HashTransformKeys:
  Enabled: true
Style/HashTransformValues:
  Enabled: true

# ruby style guide favorite
Style/StringLiterals:
  EnforcedStyle: double_quotes

# consistency with above
Style/StringLiteralsInInterpolation:
  EnforcedStyle: double_quotes

# make things a bit easier to read
Style/TernaryParentheses:
  EnforcedStyle: require_parentheses_when_complex

# a bit confusing to non-Rubyists but useful for longer arrays
Style/WordArray:
  MinSize: 4
