Merge pull request #4797 from MikeMcQuaid/rubocop-tweaks
.rubocop: tweak rules.
This commit is contained in:
		
						commit
						3b91c5f1ae
					
				| @ -7,12 +7,15 @@ AllCops: | ||||
| 
 | ||||
| require: ./Homebrew/rubocops.rb | ||||
| 
 | ||||
| # enable all formulae audits | ||||
| FormulaAudit: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # enable all formulae strict audits | ||||
| FormulaAuditStrict: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # disable all formulae strict audits by default | ||||
| NewFormulaAudit: | ||||
|   Enabled: false | ||||
| 
 | ||||
| @ -20,18 +23,19 @@ NewFormulaAudit: | ||||
| Layout/AlignParameters: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # favour parens-less DSL-style arguments | ||||
| Lint/AmbiguousOperator: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # this is a bit less "floaty" | ||||
| Layout/CaseIndentation: | ||||
|   EnforcedStyle: end | ||||
| 
 | ||||
| Layout/EmptyLineBetweenDefs: | ||||
|   AllowAdjacentOneLineDefs: true | ||||
| 
 | ||||
| # this is a bit less "floaty" | ||||
| Layout/EndAlignment: | ||||
|   EnforcedStyleAlignWith: variable | ||||
| 
 | ||||
| Layout/IndentArray: | ||||
|   EnforcedStyle: special_inside_parentheses | ||||
|   EnforcedStyleAlignWith: start_of_line | ||||
| 
 | ||||
| # enforce use of <<~EOS | ||||
| Layout/IndentHeredoc: | ||||
|   EnforcedStyle: squiggly | ||||
| 
 | ||||
| @ -39,22 +43,29 @@ Layout/IndentHeredoc: | ||||
| Layout/SpaceAroundOperators: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # favor parens-less DSL-style arguments | ||||
| Lint/AmbiguousOperator: | ||||
|   Enabled: false | ||||
| # use spaces for indentation; detect tabs | ||||
| Layout/Tab: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # so many of these in formulae and can't be autocorrected | ||||
| Lint/AmbiguousRegexpLiteral: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # favor parens-less DSL-style arguments | ||||
| # 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 | ||||
| 
 | ||||
| # assignment in conditions are useful sometimes | ||||
| # TODO: add parentheses for these and remove | ||||
| Lint/AssignmentInCondition: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # we output how to use interpolated strings too often | ||||
| Lint/InterpolationCheck: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # so many of these in formulae and can't be autocorrected | ||||
| Lint/ParenthesesAsGroupedExpression: | ||||
|   Enabled: false | ||||
| @ -62,58 +73,64 @@ Lint/ParenthesesAsGroupedExpression: | ||||
| # most metrics don't make sense to apply for formulae/taps | ||||
| Metrics/AbcSize: | ||||
|   Enabled: false | ||||
| 
 | ||||
| Metrics/BlockLength: | ||||
|   Enabled: false | ||||
| 
 | ||||
| Metrics/ClassLength: | ||||
|   Enabled: false | ||||
| 
 | ||||
| Metrics/CyclomaticComplexity: | ||||
|   Enabled: false | ||||
| Metrics/MethodLength: | ||||
|   Enabled: false | ||||
| # Metrics/ModuleLength: | ||||
| #   Enabled: false | ||||
| Metrics/PerceivedComplexity: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # keyword arguments don't have the same readability problems | ||||
| Metrics/ParameterLists: | ||||
|   CountKeywordArgs: false | ||||
| 
 | ||||
| # GitHub diff UI wraps beyond 118 characters (so that's the goal) | ||||
| Metrics/LineLength: | ||||
|   # 118 is the goal as GitHub diff UI wraps beyond that | ||||
|   Max: 189 | ||||
|   # ignore manpage comments and long single-line strings | ||||
|   IgnoredPatterns: ['#: ', ' url "', ' mirror "', ' plist_options :'] | ||||
| 
 | ||||
| Metrics/MethodLength: | ||||
|   Enabled: false | ||||
| # dashes in filenames are typical | ||||
| Naming/FileName: | ||||
|   Regex: !ruby/regexp /^[\w\@\-\+\.]+(\.rb)?$/ | ||||
| 
 | ||||
| Metrics/ModuleLength: | ||||
|   Enabled: false | ||||
| # implicitly allow EOS as we use it everywhere | ||||
| Naming/HeredocDelimiterNaming: | ||||
|   Blacklist: | ||||
|     - END, EOD, EOF | ||||
| 
 | ||||
| Metrics/ParameterLists: | ||||
|   CountKeywordArgs: false | ||||
| 
 | ||||
| Metrics/PerceivedComplexity: | ||||
| # we have too many variables like sha256 where this harms readability | ||||
| Naming/VariableNumber: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # makes code less readable for minor performance increases | ||||
| Performance/Caller: | ||||
|   Enabled: false | ||||
| 
 | ||||
| Style/Alias: | ||||
|   EnforcedStyle: prefer_alias | ||||
| 
 | ||||
| Style/AsciiComments: | ||||
|   Enabled: false | ||||
| # we're doing this already so why not | ||||
| Performance/CaseWhenSplat: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # enable to avoid leaking resources | ||||
| Style/AutoResourceCleanup: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # this is a little more obvious what's going on | ||||
| Style/BarePercentLiterals: | ||||
|   EnforcedStyle: percent_q | ||||
| 
 | ||||
| Style/BlockDelimiters: | ||||
|   EnforcedStyle: line_count_based | ||||
| # consistency helps readability and helps people who don't know Ruby | ||||
| Style/CollectionMethods: | ||||
|   Enabled: true | ||||
| 
 | ||||
| Style/ClassAndModuleChildren: | ||||
|   EnforcedStyle: nested | ||||
| 
 | ||||
| # our current conditional style is established, clear and | ||||
| # requiring users to change that now would be confusing. | ||||
| # our current conditional style is established | ||||
| # TODO: enable this when possible | ||||
| Style/ConditionalAssignment: | ||||
|   Enabled: false | ||||
| 
 | ||||
| @ -121,32 +138,17 @@ Style/ConditionalAssignment: | ||||
| Style/Documentation: | ||||
|  Enabled: false | ||||
| 
 | ||||
| # we don't need UTF-8 encoding comments | ||||
| Style/Encoding: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # disabled until we get the Metrics/LineLength down to 80. | ||||
| Style/IfUnlessModifier: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # messes with existing plist/caveats style | ||||
| Style/TrailingBodyOnMethodDefinition: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # use spaces for indentation; detect tabs | ||||
| Layout/Tab: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # We have no use for using `warn` because we are | ||||
| # calling Ruby with warnings disabled ourselves. | ||||
| Style/StderrPuts: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # dashes in filenames are typical | ||||
| Naming/FileName: | ||||
|   Regex: !ruby/regexp /^[\w\@\-\+\.]+(\.rb)?$/ | ||||
| 
 | ||||
| # falsely flags e.g. curl formatting arguments as format strings | ||||
| Style/FormatStringToken: | ||||
|   EnforcedStyle: template | ||||
| 
 | ||||
| # we want to add this slowly and manually | ||||
| # TODO: add to more files | ||||
| Style/FrozenStringLiteralComment: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # so many of these in formulae and can't be autocorrected | ||||
| @ -162,33 +164,31 @@ Style/HashSyntax: | ||||
|     - '**/lib/**/*' | ||||
|     - '**/spec/**/*' | ||||
| 
 | ||||
| # this doesn't make sense for wide lines below maximum line length | ||||
| # https://github.com/rubocop-hq/rubocop/issues/6149 | ||||
| Style/IfUnlessModifier: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # only for numbers >= 1_000_000 | ||||
| Style/NumericLiterals: | ||||
|   MinDigits: 7 | ||||
| 
 | ||||
| # zero-prefixed octal literals are just too widely used (and mostly understood) | ||||
| # zero-prefixed octal literals are just too widely used (and understood) | ||||
| Style/NumericLiteralPrefix: | ||||
|   EnforcedOctalStyle: zero_only | ||||
| 
 | ||||
| # consistency and readability when faced with string interpolation | ||||
| Style/PercentLiteralDelimiters: | ||||
|   PreferredDelimiters: | ||||
|     '%':  '()' | ||||
|     '%i': '()' | ||||
|     '%q': '()' | ||||
|     '%Q': '()' | ||||
|     '%r': '{}' | ||||
|     '%s': '()' | ||||
|     '%w': '[]' | ||||
|     '%W': '[]' | ||||
|     '%x': '()' | ||||
| # rescuing StandardError is an understood default | ||||
| Style/RescueStandardError: | ||||
|   EnforcedStyle: implicit | ||||
| 
 | ||||
| Style/RaiseArgs: | ||||
|   EnforcedStyle: exploded | ||||
| # return nil is unnecessary and a common mistake believing it's required | ||||
| Style/ReturnNil: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # paths abound, easy escape | ||||
| Style/RegexpLiteral: | ||||
|   EnforcedStyle: slashes | ||||
| # We have no use for using `warn` because we are | ||||
| # calling Ruby with warnings disabled ourselves (for now). | ||||
| Style/StderrPuts: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # ruby style guide favorite | ||||
| Style/StringLiterals: | ||||
| @ -198,46 +198,30 @@ Style/StringLiterals: | ||||
| Style/StringLiteralsInInterpolation: | ||||
|   EnforcedStyle: double_quotes | ||||
| 
 | ||||
| # consistency helps readability and helps people who don't know Ruby | ||||
| Style/StringMethods: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # less confusing to non-Rubyists | ||||
| Style/SymbolArray: | ||||
|   EnforcedStyle: brackets | ||||
| 
 | ||||
| # make things a bit easier to read | ||||
| Style/TernaryParentheses: | ||||
|   EnforcedStyle: require_parentheses_when_complex | ||||
| 
 | ||||
| # makes diffs nicer | ||||
| # messes with existing plist/caveats style | ||||
| Style/TrailingBodyOnMethodDefinition: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # all trailing commas make diffs nicer | ||||
| Style/TrailingCommaInArguments: | ||||
|   EnforcedStyleForMultiline: comma | ||||
| Style/TrailingCommaInArrayLiteral: | ||||
|   EnforcedStyleForMultiline: comma | ||||
| 
 | ||||
| Style/TrailingCommaInHashLiteral: | ||||
|   EnforcedStyleForMultiline: comma | ||||
| 
 | ||||
| Style/TrailingCommaInArguments: | ||||
|   EnforcedStyleForMultiline: comma | ||||
| 
 | ||||
| # we have too many variables like sha256 where this harms readability | ||||
| Naming/VariableNumber: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # doesn't make sense for Homebrew/brew but does for taps | ||||
| Naming/UncommunicativeMethodParamName: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # a bit confusing to non-Rubyists but useful for longer arrays | ||||
| Style/WordArray: | ||||
|   MinSize: 4 | ||||
| 
 | ||||
| # we want to add this slowly and manually | ||||
| Style/FrozenStringLiteralComment: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # generally rescuing StandardError is fine | ||||
| Style/RescueStandardError: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # implicitly allow EOS as we use it everywhere | ||||
| Naming/HeredocDelimiterNaming: | ||||
|   Blacklist: | ||||
|     - END, EOD, EOF | ||||
| 
 | ||||
| # we output how to use interpolated strings too often | ||||
| Lint/InterpolationCheck: | ||||
|   Enabled: false | ||||
|  | ||||
| @ -10,14 +10,11 @@ AllCops: | ||||
|     - '**/Casks/**/*' | ||||
|     - '**/vendor/**/*' | ||||
| 
 | ||||
| # make rspec formatting more flexible | ||||
| Layout/MultilineMethodCallIndentation: | ||||
|   Exclude: | ||||
|     - '**/*_spec.rb' | ||||
| 
 | ||||
| # Gets false positives with our heredocs nested inside arrays | ||||
| Layout/ClosingHeredocIndentation: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # so many of these in formulae but none in here | ||||
| Lint/AmbiguousRegexpLiteral: | ||||
|   Enabled: true | ||||
| @ -31,70 +28,101 @@ Lint/NestedMethodDefinition: | ||||
| Lint/ParenthesesAsGroupedExpression: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # unused keyword arguments improve APIs | ||||
| Lint/UnusedMethodArgument: | ||||
|   AllowUnusedKeywordArguments: true | ||||
| 
 | ||||
| # TODO: try to bring down all metrics maximums | ||||
| Metrics/AbcSize: | ||||
|   Max: 250 | ||||
| 
 | ||||
|   Enabled: true | ||||
|   Max: 275 | ||||
| Metrics/BlockLength: | ||||
|   Max: 1250 | ||||
| 
 | ||||
|   Enabled: true | ||||
|   Max: 1100 | ||||
| Metrics/BlockNesting: | ||||
|   Enabled: true | ||||
|   Max: 5 | ||||
| 
 | ||||
| Metrics/ClassLength: | ||||
|   Max: 1226 | ||||
| 
 | ||||
|   Enabled: true | ||||
|   Max: 1400 | ||||
| Metrics/CyclomaticComplexity: | ||||
|   Enabled: true | ||||
|   Max: 75 | ||||
| Metrics/MethodLength: | ||||
|   Enabled: true | ||||
|   Max: 300 | ||||
| Metrics/ModuleLength: | ||||
|   Enabled: true | ||||
|   Max: 500 | ||||
| Metrics/PerceivedComplexity: | ||||
|   Enabled: true | ||||
|   Max: 100 | ||||
| 
 | ||||
| # GitHub diff UI wraps beyond 118 characters | ||||
| Metrics/LineLength: | ||||
|   # 118 is the goal as GitHub diff UI wraps beyond that | ||||
|   Max: 118 | ||||
|   # ignore manpage comments | ||||
|   IgnoredPatterns: ['#: '] | ||||
| 
 | ||||
| Metrics/MethodLength: | ||||
|   Max: 195 | ||||
| 
 | ||||
| Metrics/ModuleLength: | ||||
|   Max: 222 | ||||
| 
 | ||||
| Metrics/PerceivedComplexity: | ||||
|   Max: 100 | ||||
| 
 | ||||
| # we won't change backward compatible method names | ||||
| Naming/MethodName: | ||||
|   Exclude: | ||||
|     - 'compat/**/*' | ||||
| 
 | ||||
| # we won't change backward compatible predicate names | ||||
| # TODO: deprecate whitelisted names and move to compat | ||||
| Naming/PredicateName: | ||||
|   Exclude: | ||||
|     - 'compat/**/*' | ||||
|   NameWhitelist: is_32_bit?, is_64_bit? | ||||
| 
 | ||||
| # f meaning formulae is pretty standard | ||||
| # whitelist those that are standard | ||||
| # TODO: try to remove some of these | ||||
| Naming/UncommunicativeMethodParamName: | ||||
|   Enabled: false | ||||
|   AllowedNames: | ||||
|     - '_' | ||||
|     - 'a' | ||||
|     - 'b' | ||||
|     - 'cc' | ||||
|     - 'c1' | ||||
|     - 'c2' | ||||
|     - 'd' | ||||
|     - 'e' | ||||
|     - 'f' | ||||
|     - 'ff' | ||||
|     - 'fn' | ||||
|     - 'id' | ||||
|     - 'io' | ||||
|     - 'o' | ||||
|     - 'p' | ||||
|     - 'pr' | ||||
|     - 'r' | ||||
|     - 'rb' | ||||
|     - 's' | ||||
|     - 'to' | ||||
|     - 'v' | ||||
| 
 | ||||
| # Avoid false positives on modifiers used on symbols of methods | ||||
| # See https://github.com/rubocop-hq/rubocop/issues/5953 | ||||
| Style/AccessModifierDeclarations: | ||||
|   Enabled: false | ||||
| 
 | ||||
| # make rspec formatting more flexible | ||||
| Style/BlockDelimiters: | ||||
|   Exclude: | ||||
|     - '**/*_spec.rb' | ||||
|     - '**/shared_examples/**/*.rb' | ||||
| 
 | ||||
| # document our public APIs | ||||
| Style/Documentation: | ||||
|   Enabled: true | ||||
|   Include: | ||||
|     - 'Library/Homebrew/formula.rb' | ||||
| Style/DocumentationMethod: | ||||
|   Enabled: true | ||||
|   Include: | ||||
|     - 'Library/Homebrew/formula.rb' | ||||
| 
 | ||||
| # so many of these in formulae but none in here | ||||
| Style/GuardClause: | ||||
|   Enabled: true | ||||
| 
 | ||||
| # hash-rockets preferred for formulae, a: 1 preferred elsewhere | ||||
| # hash-rockets preferred for formulae, a: 1 preferred here | ||||
| Style/HashSyntax: | ||||
|   EnforcedStyle: ruby19_no_mixed_keys | ||||
| 
 | ||||
|  | ||||
| @ -174,7 +174,7 @@ class Build | ||||
|       raise | ||||
|     end | ||||
|     Keg.new(path).optlink | ||||
|   rescue StandardError | ||||
|   rescue | ||||
|     raise "#{f.opt_prefix} not present or broken\nPlease reinstall #{f.full_name}. Sorry :(" | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -30,7 +30,7 @@ module Hbc | ||||
| 
 | ||||
|       def class_for_dsl_key(dsl_key) | ||||
|         namespace = self.class.name.to_s.sub(/::.*::.*$/, "") | ||||
|         self.class.const_get("#{namespace}::DSL::#{dsl_key.to_s.split("_").collect(&:capitalize).join}") | ||||
|         self.class.const_get("#{namespace}::DSL::#{dsl_key.to_s.split("_").map(&:capitalize).join}") | ||||
|       end | ||||
| 
 | ||||
|       def abstract_phase(dsl_key) | ||||
|  | ||||
| @ -39,7 +39,7 @@ module Hbc | ||||
|       check_latest_with_auto_updates | ||||
|       check_stanza_requires_uninstall | ||||
|       self | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       odebug "#{e.message}\n#{e.backtrace.join("\n")}" | ||||
|       add_error "exception while auditing #{cask}: #{e.message}" | ||||
|       self | ||||
|  | ||||
| @ -94,7 +94,7 @@ module Hbc | ||||
|       path = PATH.new(tap_cmd_directories, ENV["HOMEBREW_PATH"]) | ||||
| 
 | ||||
|       external_ruby_cmd = tap_cmd_directories.map { |d| d/"brewcask-#{command}.rb" } | ||||
|                                              .detect(&:file?) | ||||
|                                              .find(&:file?) | ||||
|       external_ruby_cmd ||= which("brewcask-#{command}.rb", path) | ||||
| 
 | ||||
|       if external_ruby_cmd | ||||
| @ -126,7 +126,7 @@ module Hbc | ||||
|     end | ||||
| 
 | ||||
|     def detect_command_and_arguments(*args) | ||||
|       command = args.detect do |arg| | ||||
|       command = args.find do |arg| | ||||
|         if self.class.commands.include?(arg) | ||||
|           true | ||||
|         else | ||||
|  | ||||
| @ -49,7 +49,7 @@ module Hbc | ||||
|         if locations.empty? | ||||
|           puts self.class.none_string | ||||
|         else | ||||
|           locations.collect do |l| | ||||
|           locations.map do |l| | ||||
|             add_error "Legacy install at #{l}. Run \"brew uninstall --force brew-cask\"." | ||||
|             puts l | ||||
|           end | ||||
| @ -163,7 +163,7 @@ module Hbc | ||||
| 
 | ||||
|       def self.cask_count_for_tap(tap) | ||||
|         Formatter.pluralize(tap.cask_files.count, "cask") | ||||
|       rescue StandardError | ||||
|       rescue | ||||
|         add_error "Unable to read from Tap: #{tap.path}" | ||||
|         "0" | ||||
|       end | ||||
|  | ||||
| @ -63,7 +63,7 @@ module Hbc | ||||
| 
 | ||||
|           begin | ||||
|             value = cask.send(stanza) | ||||
|           rescue StandardError | ||||
|           rescue | ||||
|             opoo "failure calling '#{stanza}' on Cask '#{cask}'" unless quiet? | ||||
|             puts "" | ||||
|             next | ||||
|  | ||||
| @ -39,7 +39,7 @@ module Hbc | ||||
|     def fetch | ||||
|       downloader.fetch | ||||
|       @downloaded_path = downloader.cached_location | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       error = CaskError.new("Download failed on Cask '#{cask}' with message: #{e}") | ||||
|       error.set_backtrace e.backtrace | ||||
|       raise error | ||||
|  | ||||
| @ -102,7 +102,7 @@ module Hbc | ||||
|       instance_variable_set("@#{stanza}", yield) | ||||
|     rescue CaskInvalidError | ||||
|       raise | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       raise CaskInvalidError.new(cask, "'#{stanza}' stanza failed with: #{e}") | ||||
|     end | ||||
| 
 | ||||
| @ -271,7 +271,7 @@ module Hbc | ||||
|           artifacts.add(klass.from_args(cask, *args)) | ||||
|         rescue CaskInvalidError | ||||
|           raise | ||||
|         rescue StandardError => e | ||||
|         rescue => e | ||||
|           raise CaskInvalidError.new(cask, "invalid '#{klass.dsl_key}' stanza: #{e}") | ||||
|         end | ||||
|       end | ||||
|  | ||||
| @ -48,7 +48,7 @@ module Hbc | ||||
|           else | ||||
|             raise | ||||
|           end | ||||
|         rescue StandardError | ||||
|         rescue | ||||
|           raise "invalid 'depends_on macos' value: #{arg.inspect}" | ||||
|         end | ||||
|       end | ||||
|  | ||||
| @ -74,7 +74,7 @@ module Hbc | ||||
| 
 | ||||
|       extract_primary_container | ||||
|       save_caskfile | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       purge_versioned_files | ||||
|       raise e | ||||
|     end | ||||
| @ -209,7 +209,7 @@ module Hbc | ||||
|         artifact.install_phase(command: @command, verbose: verbose?, force: force?) | ||||
|         already_installed_artifacts.unshift(artifact) | ||||
|       end | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       begin | ||||
|         already_installed_artifacts.each do |artifact| | ||||
|           next unless artifact.respond_to?(:uninstall_phase) | ||||
| @ -397,7 +397,7 @@ module Hbc | ||||
|           See System Preferences to enable it manually. | ||||
|         EOS | ||||
|       end | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       purge_versioned_files | ||||
|       raise e | ||||
|     end | ||||
| @ -503,12 +503,12 @@ module Hbc | ||||
|     end | ||||
| 
 | ||||
|     def backup_path | ||||
|       return nil if @cask.staged_path.nil? | ||||
|       return if @cask.staged_path.nil? | ||||
|       Pathname.new "#{@cask.staged_path}.upgrading" | ||||
|     end | ||||
| 
 | ||||
|     def backup_metadata_path | ||||
|       return nil if @cask.metadata_versioned_path.nil? | ||||
|       return if @cask.metadata_versioned_path.nil? | ||||
|       Pathname.new "#{@cask.metadata_versioned_path}.upgrading" | ||||
|     end | ||||
| 
 | ||||
|  | ||||
| @ -47,7 +47,7 @@ module Hbc | ||||
| 
 | ||||
|       parent = metadata_timestamped_path(version: version, timestamp: timestamp, create: create) | ||||
| 
 | ||||
|       return nil if parent.nil? | ||||
|       return if parent.nil? | ||||
| 
 | ||||
|       subdir = parent.join(leaf) | ||||
| 
 | ||||
|  | ||||
| @ -13,13 +13,13 @@ module Hbc | ||||
| 
 | ||||
|     def plist_set(key, value) | ||||
|       plist_exec("Set #{key} #{value}") | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       raise CaskError, "#{@cask.token}: 'plist_set' failed with: #{e}" | ||||
|     end | ||||
| 
 | ||||
|     def bundle_identifier | ||||
|       plist_exec("Print CFBundleIdentifier").stdout.chomp | ||||
|     rescue StandardError => e | ||||
|     rescue => e | ||||
|       raise CaskError, "#{@cask.token}: 'bundle_identifier' failed with: #{e}" | ||||
|     end | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ module Hbc | ||||
|       tried_ownership = false | ||||
|       begin | ||||
|         yield path | ||||
|       rescue StandardError | ||||
|       rescue | ||||
|         # in case of permissions problems | ||||
|         unless tried_permissions | ||||
|           # TODO: Better handling for the case where path is a symlink. | ||||
|  | ||||
| @ -151,7 +151,7 @@ module Homebrew | ||||
|   end | ||||
| 
 | ||||
|   def deps_for_formulae(formulae, recursive = false, &block) | ||||
|     formulae.map { |f| deps_for_formula(f, recursive) }.inject(&block) | ||||
|     formulae.map { |f| deps_for_formula(f, recursive) }.reduce(&block) | ||||
|   end | ||||
| 
 | ||||
|   def puts_deps(formulae) | ||||
|  | ||||
| @ -182,7 +182,7 @@ module Homebrew | ||||
|   end | ||||
| 
 | ||||
|   def decorate_dependencies(dependencies) | ||||
|     deps_status = dependencies.collect do |dep| | ||||
|     deps_status = dependencies.map do |dep| | ||||
|       if dep.satisfied?([]) | ||||
|         pretty_installed(dep_display_s(dep)) | ||||
|       else | ||||
| @ -193,7 +193,7 @@ module Homebrew | ||||
|   end | ||||
| 
 | ||||
|   def decorate_requirements(requirements) | ||||
|     req_status = requirements.collect do |req| | ||||
|     req_status = requirements.map do |req| | ||||
|       req_s = req.display_s | ||||
|       req.satisfied? ? pretty_installed(req_s) : pretty_uninstalled(req_s) | ||||
|     end | ||||
|  | ||||
| @ -88,7 +88,7 @@ module Homebrew | ||||
|       end | ||||
| 
 | ||||
|       json << { name: f.full_name, | ||||
|                 installed_versions: outdated_versions.collect(&:to_s), | ||||
|                 installed_versions: outdated_versions.map(&:to_s), | ||||
|                 current_version: current_version, | ||||
|                 pinned: f.pinned?, | ||||
|                 pinned_version: f.pinned_version } | ||||
|  | ||||
| @ -56,7 +56,7 @@ module Homebrew | ||||
|       conflicts(*package_manager_switches) | ||||
|     end | ||||
| 
 | ||||
|     if package_manager = PACKAGE_MANAGERS.detect { |name,| args[:"#{name}?"] } | ||||
|     if package_manager = PACKAGE_MANAGERS.find { |name,| args[:"#{name}?"] } | ||||
|       _, url = package_manager | ||||
|       exec_browser url.call(URI.encode_www_form_component(args.remaining.join(" "))) | ||||
|       return | ||||
|  | ||||
| @ -60,7 +60,7 @@ module Debrew | ||||
|         if i.positive? | ||||
|           choice = menu.entries[i - 1] | ||||
|         else | ||||
|           possible = menu.entries.find_all { |e| e.name.start_with?(input) } | ||||
|           possible = menu.entries.select { |e| e.name.start_with?(input) } | ||||
| 
 | ||||
|           case possible.size | ||||
|           when 0 then puts "No such option" | ||||
|  | ||||
| @ -257,8 +257,10 @@ module Homebrew | ||||
|       wanted_mode = 0100644 & ~File.umask | ||||
|       actual_mode = formula.path.stat.mode | ||||
|       unless actual_mode == wanted_mode | ||||
|         problem format("Incorrect file permissions (%03o): chmod %03o %s", | ||||
|                        actual_mode & 0777, wanted_mode & 0777, formula.path) | ||||
|         problem format("Incorrect file permissions (%03<actual>o): chmod %03<wanted>o %{path}", | ||||
|                        actual: actual_mode & 0777, | ||||
|                        wanted: wanted_mode & 0777, | ||||
|                        path:   formula.path) | ||||
|       end | ||||
| 
 | ||||
|       problem "'DATA' was found, but no '__END__'" if text.data? && !text.end? | ||||
| @ -407,7 +409,7 @@ module Homebrew | ||||
| 
 | ||||
|           dep.options.each do |opt| | ||||
|             next if dep_f.option_defined?(opt) | ||||
|             next if dep_f.requirements.detect do |r| | ||||
|             next if dep_f.requirements.find do |r| | ||||
|               if r.recommended? | ||||
|                 opt.name == "with-#{r.name}" | ||||
|               elsif r.optional? | ||||
|  | ||||
| @ -29,7 +29,7 @@ module Homebrew | ||||
| 
 | ||||
|     CacheStoreDatabase.use(:linkage) do |db| | ||||
|       kegs = if ARGV.kegs.empty? | ||||
|         Formula.installed.collect(&:opt_or_installed_prefix_keg).reject(&:nil?) | ||||
|         Formula.installed.map(&:opt_or_installed_prefix_keg).reject(&:nil?) | ||||
|       else | ||||
|         ARGV.kegs | ||||
|       end | ||||
|  | ||||
| @ -513,7 +513,7 @@ module Homebrew | ||||
|     def self.lookup(name) | ||||
|       json = Utils.popen_read(HOMEBREW_BREW_FILE, "info", "--json=v1", name) | ||||
| 
 | ||||
|       return nil unless $CHILD_STATUS.success? | ||||
|       return unless $CHILD_STATUS.success? | ||||
| 
 | ||||
|       Homebrew.force_utf8!(json) | ||||
|       FormulaInfoFromJson.new(JSON.parse(json)[0]) | ||||
| @ -526,9 +526,9 @@ module Homebrew | ||||
| 
 | ||||
|     def bottle_info(my_bottle_tag = Utils::Bottles.tag) | ||||
|       tag_s = my_bottle_tag.to_s | ||||
|       return nil unless info["bottle"]["stable"] | ||||
|       return unless info["bottle"]["stable"] | ||||
|       btl_info = info["bottle"]["stable"]["files"][tag_s] | ||||
|       return nil unless btl_info | ||||
|       return unless btl_info | ||||
|       BottleInfo.new(btl_info["url"], btl_info["sha256"]) | ||||
|     end | ||||
| 
 | ||||
|  | ||||
| @ -61,13 +61,13 @@ module Homebrew | ||||
|       # Specify paths relative to a prefix eg. "include/foo.h". | ||||
|       # Sets @found for your convenience. | ||||
|       def find_relative_paths(*relative_paths) | ||||
|         @found = [HOMEBREW_PREFIX, "/usr/local"].uniq.inject([]) do |found, prefix| | ||||
|         @found = [HOMEBREW_PREFIX, "/usr/local"].uniq.reduce([]) do |found, prefix| | ||||
|           found + relative_paths.map { |f| File.join(prefix, f) }.select { |f| File.exist? f } | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       def inject_file_list(list, string) | ||||
|         list.inject(string) { |acc, elem| acc << "  #{elem}\n" } | ||||
|         list.reduce(string) { |acc, elem| acc << "  #{elem}\n" } | ||||
|       end | ||||
|       ############# END HELPERS | ||||
| 
 | ||||
|  | ||||
| @ -93,7 +93,7 @@ module HomebrewArgvExtension | ||||
|   def kegs | ||||
|     require "keg" | ||||
|     require "formula" | ||||
|     @kegs ||= downcased_unique_named.collect do |name| | ||||
|     @kegs ||= downcased_unique_named.map do |name| | ||||
|       raise UsageError if name.empty? | ||||
| 
 | ||||
|       rack = Formulary.to_rack(name.downcase) | ||||
|  | ||||
| @ -23,11 +23,11 @@ class JavaRequirement < Requirement | ||||
|   end | ||||
| 
 | ||||
|   def java_home_cmd | ||||
|     return nil unless File.executable?("/usr/libexec/java_home") | ||||
|     return unless File.executable?("/usr/libexec/java_home") | ||||
|     args = %w[--failfast] | ||||
|     args << "--version" << @version.to_s if @version | ||||
|     java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp | ||||
|     return nil unless $CHILD_STATUS.success? | ||||
|     return unless $CHILD_STATUS.success? | ||||
|     Pathname.new(java_home)/"bin/java" | ||||
|   end | ||||
| 
 | ||||
|  | ||||
| @ -1120,7 +1120,7 @@ class Formula | ||||
| 
 | ||||
|       begin | ||||
|         yield self, staging | ||||
|       rescue StandardError | ||||
|       rescue | ||||
|         staging.retain! if ARGV.interactive? || ARGV.debug? | ||||
|         raise | ||||
|       ensure | ||||
| @ -1373,7 +1373,7 @@ class Formula | ||||
|     files.each do |file| | ||||
|       begin | ||||
|         yield Formulary.factory(file) | ||||
|       rescue StandardError => e | ||||
|       rescue => e | ||||
|         # Don't let one broken formula break commands. But do complain. | ||||
|         onoe "Failed to import: #{file}" | ||||
|         puts e | ||||
| @ -1812,7 +1812,9 @@ class Formula | ||||
| 
 | ||||
|     @exec_count ||= 0 | ||||
|     @exec_count += 1 | ||||
|     logfn = format("#{logs}/#{active_log_prefix}%02d.%s", @exec_count, File.basename(cmd).split(" ").first) | ||||
|     logfn = format("#{logs}/#{active_log_prefix}%02<exec_count>d.%{cmd_base}", | ||||
|                    exec_count: @exec_count, | ||||
|                    cmd_base: File.basename(cmd).split(" ").first) | ||||
|     logs.mkpath | ||||
| 
 | ||||
|     File.open(logfn, "w") do |log| | ||||
| @ -2006,7 +2008,7 @@ class Formula | ||||
|     $stdout.reopen(out) | ||||
|     $stderr.reopen(out) | ||||
|     out.close | ||||
|     args.collect!(&:to_s) | ||||
|     args.map!(&:to_s) | ||||
|     begin | ||||
|       exec(cmd, *args) | ||||
|     rescue | ||||
|  | ||||
| @ -283,7 +283,7 @@ module Formulary | ||||
|   # to install the formula will be set instead. | ||||
|   def self.from_rack(rack, spec = nil, alias_path: nil) | ||||
|     kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : [] | ||||
|     keg = kegs.detect(&:linked?) || kegs.detect(&:optlinked?) || kegs.max_by(&:version) | ||||
|     keg = kegs.find(&:linked?) || kegs.find(&:optlinked?) || kegs.max_by(&:version) | ||||
| 
 | ||||
|     if keg | ||||
|       from_keg(keg, spec, alias_path: alias_path) | ||||
| @ -432,7 +432,7 @@ module Formulary | ||||
|                       "#{tap}HomebrewFormula/#{name}.rb", | ||||
|                       "#{tap}#{name}.rb", | ||||
|                       "#{tap}Aliases/#{name}", | ||||
|                     ]).detect(&:file?) | ||||
|                     ]).find(&:file?) | ||||
|     end.compact | ||||
|   end | ||||
| 
 | ||||
|  | ||||
| @ -389,7 +389,7 @@ class Keg | ||||
| 
 | ||||
|   def oldname_opt_record | ||||
|     @oldname_opt_record ||= if (opt_dir = HOMEBREW_PREFIX/"opt").directory? | ||||
|       opt_dir.subdirs.detect do |dir| | ||||
|       opt_dir.subdirs.find do |dir| | ||||
|         dir.symlink? && dir != opt_record && path.parent == dir.resolved_path.parent | ||||
|       end | ||||
|     end | ||||
|  | ||||
| @ -69,8 +69,8 @@ class Locale | ||||
|   alias == eql? | ||||
| 
 | ||||
|   def detect(locale_groups) | ||||
|     locale_groups.detect { |locales| locales.any? { |locale| eql?(locale) } } || | ||||
|       locale_groups.detect { |locales| locales.any? { |locale| include?(locale) } } | ||||
|     locale_groups.find { |locales| locales.any? { |locale| eql?(locale) } } || | ||||
|       locale_groups.find { |locales| locales.any? { |locale| include?(locale) } } | ||||
|   end | ||||
| 
 | ||||
|   def to_s | ||||
|  | ||||
| @ -174,7 +174,7 @@ class Migrator | ||||
|     keg_dirs += new_cellar.subdirs if new_cellar.exist? | ||||
|     keg_dirs += old_cellar.subdirs | ||||
|     kegs = keg_dirs.map { |d| Keg.new(d) } | ||||
|     kegs.detect(&:linked?) || kegs.detect(&:optlinked?) | ||||
|     kegs.find(&:linked?) || kegs.find(&:optlinked?) | ||||
|   end | ||||
| 
 | ||||
|   def pinned? | ||||
|  | ||||
| @ -37,7 +37,7 @@ module ArchitectureListExtension | ||||
|   end | ||||
| 
 | ||||
|   def as_arch_flags | ||||
|     collect { |a| "-arch #{a}" }.join(" ") | ||||
|     map { |a| "-arch #{a}" }.join(" ") | ||||
|   end | ||||
| 
 | ||||
|   def as_cmake_arch_flags | ||||
|  | ||||
| @ -94,7 +94,7 @@ class JavaRequirement < Requirement | ||||
|   end | ||||
| 
 | ||||
|   def preferred_java | ||||
|     possible_javas.detect do |java| | ||||
|     possible_javas.find do |java| | ||||
|       next false unless java&.executable? | ||||
|       next true unless @version | ||||
|       next true if satisfies_version(java) | ||||
|  | ||||
| @ -335,7 +335,7 @@ class Tap | ||||
| 
 | ||||
|   # path to the directory of all {Formula} files for this {Tap}. | ||||
|   def formula_dir | ||||
|     @formula_dir ||= potential_formula_dirs.detect(&:directory?) || path/"Formula" | ||||
|     @formula_dir ||= potential_formula_dirs.find(&:directory?) || path/"Formula" | ||||
|   end | ||||
| 
 | ||||
|   def potential_formula_dirs | ||||
|  | ||||
| @ -47,56 +47,62 @@ describe RuboCop::Cop::FormulaAudit::Patches do | ||||
| 
 | ||||
|         inspect_source(source) | ||||
|         expected_offense = if patch_url =~ %r{/raw\.github\.com/} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             GitHub/Gist patches should specify a revision: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                GitHub/Gist patches should specify a revision: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 12, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{macports/trunk} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             MacPorts patches should specify a revision instead of trunk: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                MacPorts patches should specify a revision instead of trunk: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 33, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{^http://trac\.macports\.org} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             Patches from MacPorts Trac should be https://, not http: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                Patches from MacPorts Trac should be https://, not http: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 5, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{^http://bugs\.debian\.org} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             Patches from Debian should be https://, not http: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                Patches from Debian should be https://, not http: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 5, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)} | ||||
|           [{ message: <<~EOS, | ||||
|             use GitHub pull request URLs: | ||||
|               https://github.com/foo/foo-bar/pull/100.patch | ||||
|             Rather than patch-diff: | ||||
|               https://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch | ||||
|           [{ message: | ||||
|              <<~EOS, | ||||
|                use GitHub pull request URLs: | ||||
|                  https://github.com/foo/foo-bar/pull/100.patch | ||||
|                Rather than patch-diff: | ||||
|                  https://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 5, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{https?://github\.com/.+/.+/(?:commit|pull)/[a-fA-F0-9]*.(?:patch|diff)} | ||||
|           [{ message: <<~EOS, | ||||
|             GitHub patches should use the full_index parameter: | ||||
|               #{patch_url}?full_index=1 | ||||
|           [{ message: | ||||
|              <<~EOS, | ||||
|                GitHub patches should use the full_index parameter: | ||||
|                  #{patch_url}?full_index=1 | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
| @ -132,9 +138,10 @@ describe RuboCop::Cop::FormulaAudit::Patches do | ||||
|                              line: 4, | ||||
|                              column: 2, | ||||
|                              source: source }, | ||||
|                            { message: <<~EOS.chomp, | ||||
|                              Patches from MacPorts Trac should be https://, not http: | ||||
|                              http://trac.macports.org/export/68507/trunk/dports/net/trafshow/files/ | ||||
|                            { message: | ||||
|                              <<~EOS.chomp, | ||||
|                                Patches from MacPorts Trac should be https://, not http: | ||||
|                                http://trac.macports.org/export/68507/trunk/dports/net/trafshow/files/ | ||||
|                              EOS | ||||
|                              severity: :convention, | ||||
|                              line: 8, | ||||
| @ -175,47 +182,52 @@ describe RuboCop::Cop::FormulaAudit::Patches do | ||||
| 
 | ||||
|         inspect_source(source) | ||||
|         expected_offense = if patch_url =~ %r{/raw\.github\.com/} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             GitHub/Gist patches should specify a revision: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                GitHub/Gist patches should specify a revision: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 16, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{macports/trunk} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             MacPorts patches should specify a revision instead of trunk: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                MacPorts patches should specify a revision instead of trunk: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 37, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{^http://trac\.macports\.org} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             Patches from MacPorts Trac should be https://, not http: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                Patches from MacPorts Trac should be https://, not http: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 9, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{^http://bugs\.debian\.org} | ||||
|           [{ message: <<~EOS.chomp, | ||||
|             Patches from Debian should be https://, not http: | ||||
|             #{patch_url} | ||||
|           [{ message: | ||||
|              <<~EOS.chomp, | ||||
|                Patches from Debian should be https://, not http: | ||||
|                #{patch_url} | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|              column: 9, | ||||
|              source: source }] | ||||
|         elsif patch_url =~ %r{https?://patch-diff\.githubusercontent\.com/raw/(.+)/(.+)/pull/(.+)\.(?:diff|patch)} | ||||
|           [{ message: <<~EOS, | ||||
|             use GitHub pull request URLs: | ||||
|               https://github.com/foo/foo-bar/pull/100.patch | ||||
|             Rather than patch-diff: | ||||
|               https://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch | ||||
|           [{ message: | ||||
|              <<~EOS, | ||||
|                use GitHub pull request URLs: | ||||
|                  https://github.com/foo/foo-bar/pull/100.patch | ||||
|                Rather than patch-diff: | ||||
|                  https://patch-diff.githubusercontent.com/raw/foo/foo-bar/pull/100.patch | ||||
|              EOS | ||||
|              severity: :convention, | ||||
|              line: 5, | ||||
|  | ||||
| @ -80,11 +80,11 @@ module UnpackStrategy | ||||
|   def self.from_extension(extension) | ||||
|     strategies.sort_by { |s| s.extensions.map(&:length).max(0) } | ||||
|               .reverse | ||||
|               .detect { |s| s.extensions.any? { |ext| extension.end_with?(ext) } } | ||||
|               .find { |s| s.extensions.any? { |ext| extension.end_with?(ext) } } | ||||
|   end | ||||
| 
 | ||||
|   def self.from_magic(path) | ||||
|     strategies.detect { |s| s.can_extract?(path) } | ||||
|     strategies.find { |s| s.can_extract?(path) } | ||||
|   end | ||||
| 
 | ||||
|   def self.detect(path, extension_only: false, type: nil, ref_type: nil, ref: nil) | ||||
| @ -93,7 +93,7 @@ module UnpackStrategy | ||||
|     if extension_only | ||||
|       strategy ||= from_extension(path.extname) | ||||
|       strategy ||= strategies.select { |s| s < Directory || s == Fossil } | ||||
|                              .detect { |s| s.can_extract?(path) } | ||||
|                              .find { |s| s.can_extract?(path) } | ||||
|     else | ||||
|       strategy ||= from_magic(path) | ||||
|       strategy ||= from_extension(path.extname) | ||||
|  | ||||
| @ -31,8 +31,10 @@ module UnpackStrategy | ||||
|         end | ||||
| 
 | ||||
|         def bom | ||||
|           # rubocop:disable Style/AsciiComments | ||||
|           # We need to use `find` here instead of Ruby in order to properly handle | ||||
|           # file names containing special characters, such as “e” + “´” vs. “é”. | ||||
|           # rubocop:enable Style/AsciiComments | ||||
|           system_command("find", args: [".", "-print0"], chdir: self, print_stderr: false) | ||||
|             .stdout | ||||
|             .split("\0") | ||||
|  | ||||
| @ -182,7 +182,7 @@ module Homebrew | ||||
|   def _system(cmd, *args, **options) | ||||
|     pid = fork do | ||||
|       yield if block_given? | ||||
|       args.collect!(&:to_s) | ||||
|       args.map!(&:to_s) | ||||
|       begin | ||||
|         exec(cmd, *args, **options) | ||||
|       rescue | ||||
| @ -380,7 +380,7 @@ end | ||||
| 
 | ||||
| # GZips the given paths, and returns the gzipped paths | ||||
| def gzip(*paths) | ||||
|   paths.collect do |path| | ||||
|   paths.map do |path| | ||||
|     safe_system "gzip", path | ||||
|     Pathname.new("#{path}.gz") | ||||
|   end | ||||
| @ -426,7 +426,7 @@ def nostdout | ||||
| end | ||||
| 
 | ||||
| def paths | ||||
|   @paths ||= PATH.new(ENV["HOMEBREW_PATH"]).collect do |p| | ||||
|   @paths ||= PATH.new(ENV["HOMEBREW_PATH"]).map do |p| | ||||
|     begin | ||||
|       File.expand_path(p).chomp("/") | ||||
|     rescue ArgumentError | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| module Utils | ||||
|   class InreplaceError < RuntimeError | ||||
|     def initialize(errors) | ||||
|       formatted_errors = errors.inject("inreplace failed\n") do |s, (path, errs)| | ||||
|       formatted_errors = errors.reduce("inreplace failed\n") do |s, (path, errs)| | ||||
|         s << "#{path}:\n" << errs.map { |e| "  #{e}\n" }.join | ||||
|       end | ||||
|       super formatted_errors | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mike McQuaid
						Mike McQuaid