# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2016-06-09 08:12:30 -0500 using RuboCop version 0.37.2.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 7
# Cop supports --auto-correct.
# Configuration parameters: AlignWith, SupportedStyles, AutoCorrect.
# SupportedStyles: keyword, variable, start_of_line
Lint/EndAlignment:
  Enabled: false

# Offense count: 11
Lint/IneffectiveAccessModifier:
  Exclude:
    - 'lib/cocoapods/command.rb'
    - 'lib/cocoapods/downloader.rb'
    - 'lib/cocoapods/executable.rb'
    - 'lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb'
    - 'lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect.
Lint/LiteralInInterpolation:
  Exclude:
    - 'Dangerfile'

# Offense count: 1
Lint/NonLocalExitFromIterator:
  Exclude:
    - 'spec/unit/installer_spec.rb'

# Offense count: 1
Lint/UnreachableCode:
  Exclude:
    - 'Dangerfile'

# Offense count: 40
Lint/UselessAccessModifier:
  Enabled: false

# Offense count: 2035
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
# URISchemes: http, https
Metrics/LineLength:
  Max: 279

# Offense count: 1
# Configuration parameters: CountKeywordArgs.
ParameterLists:
  Max: 6

# Offense count: 5
# Cop supports --auto-correct.
Performance/Casecmp:
  Exclude:
    - 'lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb'
    - 'lib/cocoapods/installer/installation_options.rb'
    - 'lib/cocoapods/open-uri.rb'
    - 'lib/cocoapods/project.rb'
    - 'lib/cocoapods/sandbox/path_list.rb'

# Offense count: 3
# Cop supports --auto-correct.
Performance/RedundantBlockCall:
  Exclude:
    - 'lib/cocoapods/downloader/cache.rb'
    - 'lib/cocoapods/installer/analyzer/pod_variant_set.rb'
    - 'spec/unit/validator_spec.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: MaxKeyValuePairs.
Performance/RedundantMerge:
  Exclude:
    - 'lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb'

# Offense count: 1
# Cop supports --auto-correct.
Performance/StringReplacement:
  Exclude:
    - 'spec/functional/command/spec_spec.rb'

# Offense count: 22
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: prefer_alias, prefer_alias_method
Style/Alias:
  Exclude:
    - 'lib/cocoapods/config.rb'
    - 'lib/cocoapods/downloader/request.rb'
    - 'lib/cocoapods/external_sources/abstract_external_source.rb'
    - 'lib/cocoapods/installer.rb'
    - 'lib/cocoapods/installer/analyzer.rb'
    - 'lib/cocoapods/installer/analyzer/pod_variant.rb'
    - 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb'
    - 'lib/cocoapods/installer/installation_options.rb'
    - 'lib/cocoapods/installer/pod_source_installer.rb'
    - 'lib/cocoapods/target.rb'
    - 'lib/cocoapods/user_interface.rb'
    - 'lib/cocoapods/validator.rb'
    - 'spec/spec_helper.rb'
    - 'spec/spec_helper/user_interface.rb'
    - 'spec/unit/validator_spec.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: with_first_parameter, with_fixed_indentation
Style/AlignParameters:
  Exclude:
    - 'lib/cocoapods/project.rb'

# Offense count: 6
# Cop supports --auto-correct.
# Configuration parameters: SingleLineConditionsOnly.
Style/ConditionalAssignment:
  Exclude:
    - 'lib/cocoapods/command/repo/push.rb'
    - 'lib/cocoapods/external_sources/abstract_external_source.rb'
    - 'lib/cocoapods/sandbox/file_accessor.rb'
    - 'lib/cocoapods/sandbox/path_list.rb'
    - 'lib/cocoapods/sources_manager.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
Style/ExtraSpacing:
  Exclude:
    - 'spec/unit/sandbox/path_list_spec.rb'

# Offense count: 1
Style/IfInsideElse:
  Exclude:
    - 'lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb'

# Offense count: 24
# Cop supports --auto-correct.
# Configuration parameters: SupportedStyles, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_brackets
Style/IndentArray:
  EnforcedStyle: consistent

# Offense count: 24
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: aligned, indented
Style/MultilineMethodCallIndentation:
  Enabled: false

# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: aligned, indented
Style/MultilineOperationIndentation:
  Enabled: false

# Offense count: 12
# Cop supports --auto-correct.
Style/MutableConstant:
  Exclude:
    - 'bin/sandbox-pod'
    - 'lib/cocoapods/config.rb'
    - 'lib/cocoapods/generator/copy_resources_script.rb'
    - 'lib/cocoapods/installer.rb'
    - 'lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb'
    - 'lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb'
    - 'lib/cocoapods/project.rb'
    - 'spec/unit/installer/user_project_integrator/target_integrator/xcconfig_integrator_spec.rb'

# Offense count: 1
Style/NestedParenthesizedCalls:
  Exclude:
    - 'spec/unit/installer/analyzer_spec.rb'

# Offense count: 1
# Cop supports --auto-correct.
Style/RedundantParentheses:
  Exclude:
    - 'spec/unit/sandbox_spec.rb'

# Offense count: 2
# Cop supports --auto-correct.
Style/RedundantSelf:
  Exclude:
    - 'lib/cocoapods/command.rb'

# Offense count: 13
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
# SupportedStyles: slashes, percent_r, mixed
Style/RegexpLiteral:
  Exclude:
    - 'lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb'
    - 'lib/cocoapods/sandbox/path_list.rb'
    - 'lib/cocoapods/validator.rb'
    - 'spec/integration.rb'
    - 'spec/unit/external_sources/path_source_spec.rb'
    - 'spec/unit/external_sources/podspec_source_spec.rb'
    - 'spec/unit/resolver_spec.rb'

# Offense count: 1
# Cop supports --auto-correct.
Style/SpaceAroundKeyword:
  Exclude:
    - 'lib/cocoapods/project.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment.
Style/SpaceAroundOperators:
  Exclude:
    - 'spec/unit/external_sources_spec.rb'

# Offense count: 5
# Cop supports --auto-correct.
Style/UnneededInterpolation:
  Exclude:
    - 'lib/cocoapods/command/spec/create.rb'
    - 'lib/cocoapods/user_interface.rb'
    - 'lib/cocoapods/validator.rb'
    - 'spec/spec_helper/temporary_repos.rb'

# Offense count: 2
Style/ZeroLengthPredicate:
  Exclude:
    - 'lib/cocoapods/command/init.rb'
    - 'lib/cocoapods/installer/podfile_validator.rb'
