AllCops:
  Exclude:
    # Ignore HTML related things
    - '**/*.erb'
    - 'lib/puppet-strings/yard/templates/**/*'

Lint/ConditionPosition:
  Enabled: true

Lint/ElseLayout:
  Enabled: true

Lint/UnreachableCode:
  Enabled: true

Lint/UselessComparison:
  Enabled: true

# MAYBE useful - no return inside ensure block.
Lint/EnsureReturn:
  Enabled: false

# MAYBE useful - errors when rescue {} happens.
Lint/HandleExceptions:
  Enabled: false

# MAYBE useful - catches while 1
Lint/LiteralInCondition:
  Enabled: false

# MAYBE useful - but too many instances
Lint/ShadowingOuterLocalVariable:
  Enabled: false

# Can catch complicated strings.
Lint/LiteralInInterpolation:
  Enabled: true

# DISABLED really useless. Detects return as last statement.
Style/RedundantReturn:
  Enabled: false

# DISABLED since the instances do not seem to indicate any specific errors.
Lint/AmbiguousOperator:
  Enabled: false

Lint/AssignmentInCondition:
  Enabled: true

# DISABLED - not useful
Style/SpaceBeforeComment:
  Enabled: false

# DISABLED - not useful
Style/HashSyntax:
  Enabled: false

# USES: as shortcut for non nil&valid checking a = x() and a.empty?
# DISABLED - not useful
Style/AndOr:
  Enabled: false

# DISABLED - not useful
Style/RedundantSelf:
  Enabled: false

# DISABLED - not useful
Metrics/MethodLength:
  Enabled: false

# DISABLED - not useful
Style/WhileUntilModifier:
  Enabled: false

# DISABLED - the offender is just haskell envy
Lint/AmbiguousRegexpLiteral:
  Enabled: false

# DISABLED
Lint/Eval:
  Enabled: false

# DISABLED
Lint/BlockAlignment:
  Enabled: false

# DISABLED
Lint/DefEndAlignment:
  Enabled: false

# DISABLED
Lint/EndAlignment:
  Enabled: false

# DISABLED
Lint/DeprecatedClassMethods:
  Enabled: false

# DISABLED
Lint/Loop:
  Enabled: false

# DISABLED
Lint/ParenthesesAsGroupedExpression:
  Enabled: false

Lint/RescueException:
  Enabled: false

Lint/StringConversionInInterpolation:
  Enabled: false

Lint/UnusedBlockArgument:
  Enabled: false

Lint/UnusedMethodArgument:
  Enabled: false

Lint/UselessAccessModifier:
  Enabled: true

Lint/UselessAssignment:
  Enabled: true

Lint/Void:
  Enabled: true

Style/AccessModifierIndentation:
  Enabled: false

Style/AccessorMethodName:
  Enabled: false

Style/Alias:
  Enabled: false

Style/AlignArray:
  Enabled: false

Style/AlignHash:
  Enabled: false

Style/AlignParameters:
  Enabled: false

Metrics/BlockNesting:
  Enabled: false

Style/AsciiComments:
  Enabled: false

Style/Attr:
  Enabled: false

Style/BracesAroundHashParameters:
  Enabled: false

Style/CaseEquality:
  Enabled: false

Style/CaseIndentation:
  Enabled: false

Style/CharacterLiteral:
  Enabled: false

Style/ClassAndModuleCamelCase:
  Enabled: false

Style/ClassAndModuleChildren:
  Enabled: false

Style/ClassCheck:
  Enabled: false

Metrics/ClassLength:
  Enabled: false

Style/ClassMethods:
  Enabled: false

Style/ClassVars:
  Enabled: false

Style/WhenThen:
  Enabled: false

# DISABLED - not useful
Style/WordArray:
  Enabled: false

Style/UnneededPercentQ:
  Enabled: false

Style/Tab:
  Enabled: false

Style/SpaceBeforeSemicolon:
  Enabled: false

Style/TrailingBlankLines:
  Enabled: false

Style/SpaceInsideBlockBraces:
  Enabled: false

Style/SpaceInsideBrackets:
  Enabled: false

Style/SpaceInsideHashLiteralBraces:
  Enabled: false

Style/SpaceInsideParens:
  Enabled: false

Style/LeadingCommentSpace:
  Enabled: false

Style/SpaceBeforeFirstArg:
  Enabled: false

Style/SpaceAfterColon:
  Enabled: false

Style/SpaceAfterComma:
  Enabled: false

Style/SpaceAroundKeyword:
  Enabled: false

Style/SpaceAfterMethodName:
  Enabled: false

Style/SpaceAfterNot:
  Enabled: false

Style/SpaceAfterSemicolon:
  Enabled: false

Style/SpaceAroundEqualsInParameterDefault:
  Enabled: false

Style/SpaceAroundOperators:
  Enabled: false

Style/SpaceBeforeBlockBraces:
  Enabled: false

Style/SpaceBeforeComma:
  Enabled: false

Style/CollectionMethods:
  Enabled: false

Style/CommentIndentation:
  Enabled: false

Style/ColonMethodCall:
  Enabled: false

Style/CommentAnnotation:
  Enabled: false

Metrics/CyclomaticComplexity:
  Enabled: false

Style/ConstantName:
  Enabled: false

Style/Documentation:
  Enabled: false

Style/DefWithParentheses:
  Enabled: false

Style/DotPosition:
  Enabled: false

# DISABLED - used for converting to bool
Style/DoubleNegation:
  Enabled: false

Style/EachWithObject:
  Enabled: false

Style/EmptyLineBetweenDefs:
  Enabled: false

Style/IndentArray:
  Enabled: false

Style/IndentHash:
  Enabled: false

Style/IndentationConsistency:
  Enabled: false

Style/IndentationWidth:
  Enabled: false

Style/EmptyLines:
  Enabled: false

Style/EmptyLinesAroundAccessModifier:
  Enabled: false

Style/EmptyLiteral:
  Enabled: false

Metrics/LineLength:
  Enabled: false

Style/MethodCallParentheses:
  Enabled: false

Style/MethodDefParentheses:
  Enabled: false

Style/LineEndConcatenation:
  Enabled: false

Style/TrailingWhitespace:
  Enabled: false

Style/StringLiterals:
  Enabled: false

Style/TrailingCommaInLiteral:
  Enabled: false

Style/TrailingCommaInArguments:
  Enabled: false

Style/GlobalVars:
  Enabled: false

Style/GuardClause:
  Enabled: false

Style/IfUnlessModifier:
  Enabled: false

Style/MultilineIfThen:
  Enabled: false

Style/NegatedIf:
  Enabled: false

Style/NegatedWhile:
  Enabled: false

Style/Next:
  Enabled: false

Style/SingleLineBlockParams:
  Enabled: false

Style/SingleLineMethods:
  Enabled: false

Style/SpecialGlobalVars:
  Enabled: false

Style/TrivialAccessors:
  Enabled: false

Style/UnlessElse:
  Enabled: false

Style/VariableInterpolation:
  Enabled: false

Style/VariableName:
  Enabled: false

Style/WhileUntilDo:
  Enabled: false

Style/EvenOdd:
  Enabled: false

Style/FileName:
  Enabled: false

Style/For:
  Enabled: false

Style/Lambda:
  Enabled: false

Style/MethodName:
  Enabled: false

Style/MultilineTernaryOperator:
  Enabled: false

Style/NestedTernaryOperator:
  Enabled: false

Style/NilComparison:
  Enabled: false

Style/FormatString:
  Enabled: false

Style/MultilineBlockChain:
  Enabled: false

Style/Semicolon:
  Enabled: false

Style/SignalException:
  Enabled: false

Style/NonNilCheck:
  Enabled: false

Style/Not:
  Enabled: false

Style/NumericLiterals:
  Enabled: false

Style/OneLineConditional:
  Enabled: false

Style/OpMethod:
  Enabled: false

Style/ParenthesesAroundCondition:
  Enabled: false

Style/PercentLiteralDelimiters:
  Enabled: false

Style/PerlBackrefs:
  Enabled: false

Style/PredicateName:
  Enabled: false

Style/RedundantException:
  Enabled: false

Style/SelfAssignment:
  Enabled: false

Style/Proc:
  Enabled: false

Style/RaiseArgs:
  Enabled: false

Style/RedundantBegin:
  Enabled: false

Style/RescueModifier:
  Enabled: false

Style/RegexpLiteral:
  Enabled: false

Lint/UnderscorePrefixedVariableName:
  Enabled: false

Metrics/ParameterLists:
  Enabled: false

Lint/RequireParentheses:
  Enabled: false

Style/ModuleFunction:
  Enabled: false

Lint/Debugger:
  Enabled: false

Style/IfWithSemicolon:
  Enabled: false

Style/Encoding:
  Enabled: false

Style/MultilineOperationIndentation:
  Enabled: false

Style/BlockDelimiters:
  Enabled: false

Style/ExtraSpacing:
  Enabled: false

Style/MultilineHashBraceLayout:
  Enabled: false

Style/MultilineMethodCallBraceLayout:
  Enabled: false

Style/MultilineBlockLayout:
  Enabled: false

Lint/UselessAssignment:
  Enabled: false

Lint/DuplicateMethods:
  Enabled: false

Style/EmptyLinesAroundMethodBody:
  Enabled: false

Style/EmptyLinesAroundModuleBody:
  Enabled: false

Style/EmptyLinesAroundBlockBody:
  Enabled: false

Style/EmptyLinesAroundClassBody:
  Enabled: false

Style/UnneededInterpolation:
  Enabled: false

Style/SymbolProc:
  Enabled: false

Style/ConditionalAssignment:
  Enabled: false

Style/ZeroLengthPredicate:
  Enabled: false

Style/TrailingUnderscoreVariable:
  Enabled: false

Style/StringLiteralsInInterpolation:
  Enabled: false

Style/RedundantParentheses:
  Enabled: false

Style/MutableConstant:
  Enabled: false

Performance/RedundantMatch:
  Enabled: false

Performance/FlatMap:
  Enabled: false

Performance/StringReplacement:
  Enabled: false

Metrics/AbcSize:
  Enabled: false

Metrics/PerceivedComplexity:
  Enabled: false

Metrics/BlockLength:
  Enabled: false

Style/VariableNumber:
  Enabled: false