Merge pull request #1050 from reitermarkus/rubocop

RuboCop changes.
This commit is contained in:
Markus Reiter 2016-09-23 17:17:49 +02:00 committed by GitHub
commit 246bb1a3b1
100 changed files with 620 additions and 698 deletions

View File

@ -4,6 +4,8 @@ inherit_from:
AllCops:
TargetRubyVersion: 2.0
Include:
- '**/.simplecov'
Exclude:
- 'Homebrew/cask/**/*'
- 'Homebrew/vendor/**/*'

View File

@ -7,6 +7,14 @@ Style/StringLiterals:
Style/StringLiteralsInInterpolation:
EnforcedStyle: double_quotes
# only for numbers >= 1_000_000
Style/NumericLiterals:
MinDigits: 7
# zero-prefixed octal literals are just too widely used (and mostly understood)
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_only
# percent-x is allowed for multiline
Style/CommandLiteral:
EnforcedStyle: mixed
@ -58,14 +66,6 @@ Lint/ParenthesesAsGroupedExpression:
Style/EmptyLineBetweenDefs:
AllowAdjacentOneLineDefs: true
# port numbers and such tech stuff
Style/NumericLiterals:
Enabled: false
# zero-prefixed octal literals are just too widely used (and mostly understood)
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_only
# consistency and readability when faced with string interpolation
Style/PercentLiteralDelimiters:
PreferredDelimiters:
@ -93,15 +93,31 @@ Style/AlignParameters:
# counterproductive in formulas, notably within the install method
Style/GuardClause:
Enabled: false
Exclude:
- 'Taps/**/*'
Style/IfUnlessModifier:
Exclude:
- 'Taps/**/*'
# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/3516
Style/VariableNumber:
Enabled: false
# TODO: enforce when rubocop has shipped this
# https://github.com/bbatsov/rubocop/pull/3513
Style/TernaryParentheses:
Enabled: false
# dashes in filenames are typical
# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/1545
Style/FileName:
Enabled: false
# matches:
# file_name.rb (default)
# file-name.rb, --filename.rb (command names)
# FILENAME.rb (ARGV and ENV)
# does not match:
# dashes-and_underscores.rb
Regex: !ruby/regexp /^((([\dA-Z]+|[\da-z]+)(_([\dA-Z]+|[\da-z]+))*|(\-\-)?([\dA-Z]+|[\da-z]+)(-([\dA-Z]+|[\da-z]+))*))(\.rb)?$/
# no percent word array, being friendly to non-ruby users
# TODO: enforce when rubocop has fixed this
@ -134,6 +150,7 @@ Style/MethodName:
Style/PredicateName:
Exclude:
- 'Homebrew/compat/**/*'
NameWhitelist: is_32_bit?, is_64_bit?
# `formula do` uses nested method definitions
Lint/NestedMethodDefinition:

View File

@ -1,21 +1,11 @@
# This configuration was generated by
# `rubocop --auto-gen-config --exclude-limit 30`
# on 2016-09-18 15:15:22 +0100 using RuboCop version 0.41.2.
# `rubocop --auto-gen-config --exclude-limit 100`
# on 2016-09-22 20:07:41 +0200 using RuboCop version 0.43.0.
# 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: 4
# Cop supports --auto-correct.
# Configuration parameters: AlignWith, SupportedStyles, AutoCorrect.
# SupportedStyles: keyword, variable, start_of_line
Lint/EndAlignment:
Exclude:
- 'Homebrew/download_strategy.rb'
- 'Homebrew/keg.rb'
- 'Homebrew/os/mac/cctools_mach.rb'
# Offense count: 18
Lint/HandleExceptions:
Exclude:
@ -52,11 +42,6 @@ Lint/NestedMethodDefinition:
- 'Homebrew/dev-cmd/bottle.rb'
- 'Homebrew/dev-cmd/test-bot.rb'
# Offense count: 2
Lint/NonLocalExitFromIterator:
Exclude:
- 'Homebrew/extend/pathname.rb'
# Offense count: 28
Lint/RescueException:
Exclude:
@ -80,12 +65,7 @@ Lint/RescueException:
# Offense count: 1
Lint/ShadowedException:
Exclude:
- 'Homebrew/brew.rb'
# Offense count: 2
Lint/UselessAssignment:
Exclude:
- 'Homebrew/requirements.rb'
- 'Homebrew/utils/fork.rb'
# Offense count: 18
Metrics/BlockNesting:
@ -94,19 +74,13 @@ Metrics/BlockNesting:
# Offense count: 20
# Configuration parameters: CountComments.
Metrics/ModuleLength:
Max: 400
Max: 370
# Offense count: 1
# Offense count: 2
# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
Max: 6
# Offense count: 2
Performance/FixedSize:
Exclude:
- 'Homebrew/dev-cmd/audit.rb'
- 'Homebrew/dev-cmd/bottle.rb'
# Offense count: 8
Style/AccessorMethodName:
Exclude:
@ -125,33 +99,10 @@ Style/Alias:
Exclude:
- 'Homebrew/blacklist.rb'
# Offense count: 26
# Offense count: 1
Style/CaseEquality:
Exclude:
- 'Homebrew/cleanup.rb'
- 'Homebrew/cmd/search.rb'
- 'Homebrew/compilers.rb'
- 'Homebrew/cxxstdlib.rb'
- 'Homebrew/debrew.rb'
- 'Homebrew/dependencies.rb'
- 'Homebrew/dependency_collector.rb'
- 'Homebrew/download_strategy.rb'
- 'Homebrew/formula.rb'
- 'Homebrew/options.rb'
- 'Homebrew/patch.rb'
- 'Homebrew/pkg_version.rb'
- 'Homebrew/requirement.rb'
- 'Homebrew/requirements.rb'
- 'Homebrew/software_spec.rb'
- 'Homebrew/version.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: IndentWhenRelativeTo, SupportedStyles, IndentOneStep, IndentationWidth.
# SupportedStyles: case, end
Style/CaseIndentation:
Exclude:
- 'Homebrew/keg.rb'
# Offense count: 11
Style/ClassVars:
@ -168,17 +119,6 @@ Style/ConstantName:
Exclude:
- 'Homebrew/os/mac.rb'
# Offense count: 10
Style/DoubleNegation:
Exclude:
- 'Homebrew/extend/ARGV.rb'
- 'Homebrew/formula_installer.rb'
- 'Homebrew/os/mac/cctools_keg.rb'
- 'Homebrew/os/mac/ruby_keg.rb'
- 'Homebrew/os/mac/xcode.rb'
- 'Homebrew/requirement.rb'
- 'Homebrew/software_spec.rb'
# Offense count: 1
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: format, sprintf, percent
@ -193,22 +133,57 @@ Style/GlobalVars:
- 'Homebrew/diagnostic.rb'
- 'Homebrew/utils.rb'
# Offense count: 2
Style/IdenticalConditionalBranches:
# Offense count: 70
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Exclude:
- 'Homebrew/formula_lock.rb'
# Offense count: 5
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: snake_case, camelCase
Style/MethodName:
Exclude:
- 'Homebrew/compat/**/*'
- 'Homebrew/cleanup.rb'
- 'Homebrew/diagnostic.rb'
- 'Homebrew/formula_cellar_checks.rb'
- 'Taps/**/*'
- 'Homebrew/cmd/update-report.rb'
- 'Homebrew/dependency_collector.rb'
- 'Homebrew/dev-cmd/audit.rb'
- 'Homebrew/dev-cmd/pull.rb'
- 'Homebrew/dev-cmd/test-bot.rb'
- 'Homebrew/download_strategy.rb'
- 'Homebrew/extend/ARGV.rb'
- 'Homebrew/extend/ENV/shared.rb'
- 'Homebrew/extend/ENV/std.rb'
- 'Homebrew/extend/ENV/super.rb'
- 'Homebrew/extend/fileutils.rb'
- 'Homebrew/extend/os/mac/extend/ENV/std.rb'
- 'Homebrew/extend/os/mac/formula_cellar_checks.rb'
- 'Homebrew/extend/os/mac/utils/bottles.rb'
- 'Homebrew/extend/string.rb'
- 'Homebrew/formula.rb'
- 'Homebrew/formula_installer.rb'
- 'Homebrew/os/mac/cctools_mach.rb'
- 'Homebrew/formula_lock.rb'
- 'Homebrew/formulary.rb'
- 'Homebrew/keg.rb'
- 'Homebrew/migrator.rb'
- 'Homebrew/os/mac/xcode.rb'
- 'Homebrew/patch.rb'
- 'Homebrew/requirement.rb'
- 'Homebrew/tap.rb'
- 'Homebrew/test/test_cmd_testbot.rb'
- 'Homebrew/test/test_integration_cmds.rb'
- 'Homebrew/test/testing_env.rb'
- 'Homebrew/utils.rb'
- 'Homebrew/utils/popen.rb'
- 'Homebrew/version.rb'
# Offense count: 51
# Cop supports --auto-correct.
# Configuration parameters: MaxLineLength.
Style/IfUnlessModifier:
Exclude:
- 'Taps/**/*'
- 'Homebrew/dev-cmd/audit.rb'
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: SupportedStyles, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_brackets
Style/IndentArray:
EnforcedStyle: special_inside_parentheses
# Offense count: 7
# Configuration parameters: EnforcedStyle, SupportedStyles.
@ -241,14 +216,6 @@ Style/MutableConstant:
- 'Homebrew/tab.rb'
- 'Homebrew/tap.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
# SupportedStyles: skip_modifier_ifs, always
Style/Next:
Exclude:
- 'Homebrew/dev-cmd/test-bot.rb'
# Offense count: 9
Style/OpMethod:
Exclude:
@ -257,37 +224,9 @@ Style/OpMethod:
- 'Homebrew/install_renamed.rb'
- 'Homebrew/options.rb'
# Offense count: 4
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
Style/PredicateName:
Exclude:
- 'Homebrew/compat/**/*'
- 'Homebrew/download_strategy.rb'
- 'Homebrew/hardware.rb'
# Offense count: 7
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
# SupportedStyles: slashes, percent_r, mixed
Style/RegexpLiteral:
Exclude:
- 'Homebrew/diagnostic.rb'
- 'Homebrew/keg.rb'
- 'Homebrew/version.rb'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowAsExpressionSeparator.
Style/Semicolon:
Exclude:
- 'Homebrew/descriptions.rb'
# Offense count: 1
# Configuration parameters: Methods.
# Methods: {"reduce"=>["a", "e"]}, {"inject"=>["a", "e"]}
Style/SingleLineBlockParams:
Exclude:
- 'Homebrew/diagnostic.rb'
# Configuration parameters: SupportedStyles.
# SupportedStyles: use_perl_names, use_english_names
Style/SpecialGlobalVars:
EnforcedStyle: use_perl_names

View File

@ -37,9 +37,9 @@ begin
cmd = nil
ARGV.dup.each_with_index do |arg, i|
if help_flag && cmd
break
elsif help_flag_list.include?(arg)
break if help_flag && cmd
if help_flag_list.include?(arg)
# Option-style help: Both `--help <cmd>` and `<cmd> --help` are fine.
help_flag = true
elsif arg == "help" && !cmd

View File

@ -31,9 +31,8 @@ class Build
def post_superenv_hacks
# Only allow Homebrew-approved directories into the PATH, unless
# a formula opts-in to allowing the user's path.
if formula.env.userpaths? || reqs.any? { |rq| rq.env.userpaths? }
ENV.userpaths!
end
return unless formula.env.userpaths? || reqs.any? { |rq| rq.env.userpaths? }
ENV.userpaths!
end
def effective_build_options_for(dependent)

View File

@ -1,10 +1,8 @@
require: 'rubocop-cask'
AllCops:
TargetRubyVersion: 2.0
Exclude:
- '**/.simplecov'
- '**/Casks/**/*'
- 'developer/**/*'
- '**/vendor/**/*'
Metrics/AbcSize:
@ -16,10 +14,10 @@ Metrics/ClassLength:
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Metrics/LineLength:
Enabled: false
Metrics/PerceivedComplexity:
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
@ -29,6 +27,16 @@ Metrics/ModuleLength:
- 'lib/hbc/macos.rb'
- 'lib/hbc/utils.rb'
Metrics/PerceivedComplexity:
Enabled: false
Style/AlignHash:
EnforcedHashRocketStyle: table
EnforcedColonStyle: table
Style/BarePercentLiterals:
EnforcedStyle: percent_q
Style/BlockDelimiters:
EnforcedStyle: semantic
FunctionalMethods:
@ -59,6 +67,8 @@ Style/BlockDelimiters:
- chdir
- context
- create
- define_method
- define_singleton_method
- each_with_object
- fork
- measure
@ -75,15 +85,47 @@ Style/BlockDelimiters:
- lambda
- proc
Style/ClassAndModuleChildren:
EnforcedStyle: compact
Style/PredicateName:
NameWhitelist: is_32_bit?, is_64_bit?
Style/Documentation:
Enabled: false
Style/FileName:
Regex: !ruby/regexp /^((([\dA-Z]+|[\da-z]+)(_([\dA-Z]+|[\da-z]+))*|(\-\-)?([\dA-Z]+|[\da-z]+)(-([\dA-Z]+|[\da-z]+))*))(\.rb)?$/
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
Style/IndentArray:
EnforcedStyle: align_brackets
Style/IndentHash:
EnforcedStyle: align_braces
Style/PercentLiteralDelimiters:
PreferredDelimiters:
'%': '{}'
'%i': '{}'
'%q': '{}'
'%Q': '{}'
'%r': '{}'
'%s': '()'
'%w': '[]'
'%W': '[]'
'%x': '()'
Style/RaiseArgs:
EnforcedStyle: exploded
Style/RegexpLiteral:
EnforcedStyle: percent_r
Style/StringLiterals:
EnforcedStyle: double_quotes
Style/StringLiteralsInInterpolation:
EnforcedStyle: double_quotes
Style/TrailingCommaInLiteral:
EnforcedStyleForMultiline: comma

View File

@ -7,10 +7,6 @@ group :debug do
gem "pry-byebug", platforms: :mri
end
group :development do
gem "rubocop-cask", "~> 0.8.3"
end
group :test do
# This is SimpleCov v0.12.0 with two fixes merged on top, that finally resolve
# all issues with parallel tests, uncovered files, and tracked files. Switch

View File

@ -12,7 +12,6 @@ GEM
remote: https://rubygems.org/
specs:
ansi (1.5.0)
ast (2.3.0)
builder (3.2.2)
byebug (9.0.5)
codecov (0.1.5)
@ -36,9 +35,6 @@ GEM
parallel (1.9.0)
parallel_tests (2.9.0)
parallel
parser (2.3.1.2)
ast (~> 2.2)
powerpack (0.1.1)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
@ -46,8 +42,6 @@ GEM
pry-byebug (3.4.0)
byebug (~> 9.0)
pry (~> 0.10)
public_suffix (2.0.2)
rainbow (2.1.0)
rake (10.4.2)
rspec (3.0.0)
rspec-core (~> 3.0.0)
@ -66,19 +60,9 @@ GEM
rspec-support (3.0.4)
rspec-wait (0.0.9)
rspec (>= 3, < 4)
rubocop (0.41.2)
parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
rubocop-cask (0.8.3)
public_suffix (~> 2.0)
rubocop (~> 0.41.1)
ruby-progressbar (1.8.1)
simplecov-html (0.10.0)
slop (3.6.0)
unicode-display_width (1.1.0)
url (0.3.2)
PLATFORMS
@ -96,7 +80,6 @@ DEPENDENCIES
rspec (~> 3.0.0)
rspec-its
rspec-wait
rubocop-cask (~> 0.8.3)
simplecov (= 0.12.0)!
BUNDLED WITH

View File

@ -1,6 +1,5 @@
require "rake/testtask"
require "rspec/core/rake_task"
require "rubocop/rake_task"
homebrew_repo = `brew --repository`.chomp
$LOAD_PATH.unshift(File.expand_path("#{homebrew_repo}/Library/Homebrew"))
@ -18,12 +17,6 @@ namespace :test do
end
end
RuboCop::RakeTask.new(:rubocop) do |t|
t.options = ["--force-exclusion"]
end
task default: [:rubocop]
desc "Open a REPL for debugging and experimentation"
task :console do
require "pry"

View File

@ -10,7 +10,7 @@ class Hbc::Artifact::AbstractFlightBlock < Hbc::Artifact::Base
end
def self.class_for_dsl_key(dsl_key)
Object.const_get("Hbc::DSL::#{dsl_key.to_s.split('_').collect(&:capitalize).join}")
Object.const_get("Hbc::DSL::#{dsl_key.to_s.split("_").collect(&:capitalize).join}")
end
def self.me?(cask)

View File

@ -64,9 +64,9 @@ class Hbc::Artifact::Moved < Hbc::Artifact::Relocated
def delete
ohai "Removing #{self.class.artifact_english_name}: '#{target}'"
if MacOS.undeletable?(target)
raise Hbc::CaskError, "Cannot remove undeletable #{self.class.artifact_english_name}"
elsif force
raise Hbc::CaskError, "Cannot remove undeletable #{self.class.artifact_english_name}" if MacOS.undeletable?(target)
if force
Hbc::Utils.gain_permissions_remove(target, command: @command)
else
target.rmtree

View File

@ -3,32 +3,32 @@ module Hbc::Cache
def ensure_cache_exists
return if Hbc.cache.exist?
odebug "Creating Cache at #{Hbc.cache}"
Hbc.cache.mkpath
end
def migrate_legacy_cache
if Hbc.legacy_cache.exist?
ohai "Migrating cached files to #{Hbc.cache}..."
return unless Hbc.legacy_cache.exist?
Hbc.legacy_cache.children.select(&:symlink?).each do |symlink|
file = symlink.readlink
ohai "Migrating cached files to #{Hbc.cache}..."
Hbc.legacy_cache.children.select(&:symlink?).each do |symlink|
file = symlink.readlink
new_name = file.basename
.sub(%r{\-((?:(\d|#{Hbc::DSL::Version::DIVIDER_REGEX})*\-\2*)*[^\-]+)$}x,
'--\1')
new_name = file.basename
.sub(%r{\-((?:(\d|#{Hbc::DSL::Version::DIVIDER_REGEX})*\-\2*)*[^\-]+)$}x,
'--\1')
renamed_file = Hbc.cache.join(new_name)
renamed_file = Hbc.cache.join(new_name)
if file.exist?
puts "#{file} -> #{renamed_file}"
FileUtils.mv(file, renamed_file)
end
FileUtils.rm(symlink)
if file.exist?
puts "#{file} -> #{renamed_file}"
FileUtils.mv(file, renamed_file)
end
FileUtils.remove_entry_secure(Hbc.legacy_cache)
FileUtils.rm(symlink)
end
FileUtils.remove_entry_secure(Hbc.legacy_cache)
end
end

View File

@ -87,28 +87,29 @@ class Hbc::Cask
end
def dumpcask
if Hbc.respond_to?(:debug) && Hbc.debug
odebug "Cask instance dumps in YAML:"
odebug "Cask instance toplevel:", to_yaml
[
:name,
:homepage,
:url,
:appcast,
:version,
:license,
:sha256,
:artifacts,
:caveats,
:depends_on,
:conflicts_with,
:container,
:gpg,
:accessibility_access,
:auto_updates,
].each do |method|
odebug "Cask instance method '#{method}':", send(method).to_yaml
end
return unless Hbc.respond_to?(:debug)
return unless Hbc.debug
odebug "Cask instance dumps in YAML:"
odebug "Cask instance toplevel:", to_yaml
[
:name,
:homepage,
:url,
:appcast,
:version,
:license,
:sha256,
:artifacts,
:caveats,
:depends_on,
:conflicts_with,
:container,
:gpg,
:accessibility_access,
:auto_updates,
].each do |method|
odebug "Cask instance method '#{method}':", send(method).to_yaml
end
end
end

View File

@ -3,39 +3,39 @@ module Hbc::Caskroom
def migrate_caskroom_from_repo_to_prefix
repo_caskroom = Hbc.homebrew_repository.join("Caskroom")
if !Hbc.caskroom.exist? && repo_caskroom.directory?
ohai "Moving Caskroom from HOMEBREW_REPOSITORY to HOMEBREW_PREFIX"
return if Hbc.caskroom.exist?
return unless repo_caskroom.directory?
if Hbc.caskroom.parent.writable?
FileUtils.mv repo_caskroom, Hbc.caskroom
else
opoo "#{Hbc.caskroom.parent} is not writable, sudo is needed to move the Caskroom."
system "/usr/bin/sudo", "--", "/bin/mv", "--", repo_caskroom.to_s, Hbc.caskroom.parent.to_s
end
ohai "Moving Caskroom from HOMEBREW_REPOSITORY to HOMEBREW_PREFIX"
if Hbc.caskroom.parent.writable?
FileUtils.mv repo_caskroom, Hbc.caskroom
else
opoo "#{Hbc.caskroom.parent} is not writable, sudo is needed to move the Caskroom."
system "/usr/bin/sudo", "--", "/bin/mv", "--", repo_caskroom.to_s, Hbc.caskroom.parent.to_s
end
end
def ensure_caskroom_exists
unless Hbc.caskroom.exist?
ohai "Creating Caskroom at #{Hbc.caskroom}"
return if Hbc.caskroom.exist?
if Hbc.caskroom.parent.writable?
Hbc.caskroom.mkpath
else
ohai "We'll set permissions properly so we won't need sudo in the future"
toplevel_dir = Hbc.caskroom
toplevel_dir = toplevel_dir.parent until toplevel_dir.parent.root?
unless toplevel_dir.directory?
# If a toplevel dir such as '/opt' must be created, enforce standard permissions.
# sudo in system is rude.
system "/usr/bin/sudo", "--", "/bin/mkdir", "--", toplevel_dir
system "/usr/bin/sudo", "--", "/bin/chmod", "--", "0775", toplevel_dir
end
ohai "Creating Caskroom at #{Hbc.caskroom}"
if Hbc.caskroom.parent.writable?
Hbc.caskroom.mkpath
else
ohai "We'll set permissions properly so we won't need sudo in the future"
toplevel_dir = Hbc.caskroom
toplevel_dir = toplevel_dir.parent until toplevel_dir.parent.root?
unless toplevel_dir.directory?
# If a toplevel dir such as '/opt' must be created, enforce standard permissions.
# sudo in system is rude.
system "/usr/bin/sudo", "--", "/bin/mkdir", "-p", "--", Hbc.caskroom
unless Hbc.caskroom.parent == toplevel_dir
system "/usr/bin/sudo", "--", "/usr/sbin/chown", "-R", "--", "#{Hbc::Utils.current_user}:staff", Hbc.caskroom.parent.to_s
end
system "/usr/bin/sudo", "--", "/bin/mkdir", "--", toplevel_dir
system "/usr/bin/sudo", "--", "/bin/chmod", "--", "0775", toplevel_dir
end
# sudo in system is rude.
system "/usr/bin/sudo", "--", "/bin/mkdir", "-p", "--", Hbc.caskroom
unless Hbc.caskroom.parent == toplevel_dir
system "/usr/bin/sudo", "--", "/usr/sbin/chown", "-R", "--", "#{Hbc::Utils.current_user}:staff", Hbc.caskroom.parent.to_s
end
end
end

View File

@ -117,11 +117,11 @@ class Hbc::CLI
rescue NameError
nil
end
if klass.respond_to?(:run)
# invoke "run" on a Ruby library which follows our coding conventions
klass.run(*rest)
else
# other Ruby libraries must do everything via "require"
klass.run(*rest)
end
elsif Hbc::Utils.which "brewcask-#{command}"
# arbitrary external executable on PATH, Homebrew-style

View File

@ -6,7 +6,7 @@ class Hbc::CLI::Audit < Hbc::CLI::Base
def self.run(*args)
failed_casks = new(args, Hbc::Auditor).run
return if failed_casks.empty?
raise Hbc::CaskError, "audit failed for casks: #{failed_casks.join(' ')}"
raise Hbc::CaskError, "audit failed for casks: #{failed_casks.join(" ")}"
end
def initialize(args, auditor)

View File

@ -65,7 +65,7 @@ class Hbc::CLI::Cleanup < Hbc::CLI::Base
def remove_cache_files(*tokens)
message = "Removing cached downloads"
message.concat " for #{tokens.join(', ')}" unless tokens.empty?
message.concat " for #{tokens.join(", ")}" unless tokens.empty?
message.concat " older than #{OUTDATED_DAYS} days old" if outdated_only
ohai message

View File

@ -54,7 +54,7 @@ class Hbc::CLI::Doctor < Hbc::CLI::Base
if homebrew_origin !~ %r{\S}
homebrew_origin = "#{none_string} #{error_string}"
elsif homebrew_origin !~ %r{(mxcl|Homebrew)/(home)?brew(\.git)?\Z}
homebrew_origin.concat " #{error_string 'warning: nonstandard origin'}"
homebrew_origin.concat " #{error_string "warning: nonstandard origin"}"
end
rescue StandardError
homebrew_origin = error_string "Not Found - Error running git"
@ -106,7 +106,7 @@ class Hbc::CLI::Doctor < Hbc::CLI::Base
end
def self.privileged_uid
Process.euid == 0 ? "Yes #{error_string 'warning: not recommended'}" : "No"
Process.euid.zero? ? "Yes #{error_string "warning: not recommended"}" : "No"
rescue StandardError
notfound_string
end
@ -143,7 +143,7 @@ class Hbc::CLI::Doctor < Hbc::CLI::Base
if dir.nil? || dir.to_s.empty?
none_string
elsif dir.to_s.match(legacy_tap_pattern)
dir.to_s.concat(" #{error_string 'Warning: legacy tap path'}")
dir.to_s.concat(" #{error_string "Warning: legacy tap path"}")
else
dir.to_s
end
@ -175,9 +175,9 @@ class Hbc::CLI::Doctor < Hbc::CLI::Base
def self.render_staging_location(path)
path = Pathname.new(path)
if !path.exist?
"#{path} #{error_string 'error: path does not exist'}}"
"#{path} #{error_string "error: path does not exist"}}"
elsif !path.writable?
"#{path} #{error_string 'error: not writable by current user'}"
"#{path} #{error_string "error: not writable by current user"}"
else
path
end

View File

@ -36,7 +36,7 @@ class Hbc::CLI::Install < Hbc::CLI::Base
count += 1
end
end
count == 0 ? nil : count == cask_tokens.length
count.zero? ? nil : count == cask_tokens.length
end
def self.warn_unavailable_with_suggestion(cask_token, e)

View File

@ -62,7 +62,7 @@ class Hbc::CLI::InternalAuditModifiedCasks < Hbc::CLI::InternalUseBase
end
def git_root
@git_root ||= git(*%w[rev-parse --show-toplevel])
@git_root ||= git("rev-parse", "--show-toplevel")
end
def modified_cask_files
@ -83,8 +83,8 @@ class Hbc::CLI::InternalAuditModifiedCasks < Hbc::CLI::InternalUseBase
@modified_casks = modified_cask_files.map { |f| Hbc.load(f) }
if @modified_casks.any?
num_modified = @modified_casks.size
ohai "#{num_modified} modified #{pluralize('cask', num_modified)}: " \
"#{@modified_casks.join(' ')}"
ohai "#{num_modified} modified #{pluralize("cask", num_modified)}: " \
"#{@modified_casks.join(" ")}"
end
@modified_casks
end
@ -122,7 +122,7 @@ class Hbc::CLI::InternalAuditModifiedCasks < Hbc::CLI::InternalUseBase
num_failed = failed_casks.size
cask_pluralized = pluralize("cask", num_failed)
odie "audit failed for #{num_failed} #{cask_pluralized}: " \
"#{failed_casks.join(' ')}"
"#{failed_casks.join(" ")}"
end
def pluralize(str, num)

View File

@ -21,7 +21,7 @@ class Hbc::CLI::InternalDump < Hbc::CLI::InternalUseBase
opoo "#{cask_token} was not found or would not load: #{e}"
end
end
count == 0 ? nil : count == cask_tokens.length
count.zero? ? nil : count == cask_tokens.length
end
def self.help

View File

@ -118,7 +118,7 @@ class Hbc::CLI::InternalStanza < Hbc::CLI::InternalUseBase
count += 1
end
count == 0 ? nil : count == cask_tokens.length
count.zero? ? nil : count == cask_tokens.length
end
def self.help

View File

@ -48,7 +48,7 @@ class Hbc::CLI::List < Hbc::CLI::Base
end
end
count == 0 ? nil : count == cask_tokens.length
count.zero? ? nil : count == cask_tokens.length
end
def self.list_artifacts(cask)

View File

@ -28,8 +28,8 @@ class Hbc::CLI::Uninstall < Hbc::CLI::Base
single = versions.count == 1
puts <<-EOS.undent
#{cask_token} #{versions.join(', ')} #{single ? 'is' : 'are'} still installed.
Remove #{single ? 'it' : 'them all'} with `brew cask uninstall --force #{cask_token}`.
#{cask_token} #{versions.join(", ")} #{single ? "is" : "are"} still installed.
Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask_token}`.
EOS
end
end

View File

@ -269,8 +269,16 @@ class Hbc::DSL
end
def method_missing(method, *)
Hbc::Utils.method_missing_message(method, token)
nil
if method
Hbc::Utils.method_missing_message(method, token)
nil
else
super
end
end
def respond_to_missing?(*)
true
end
def appdir

View File

@ -13,9 +13,17 @@ class Hbc::DSL::Base
end
def method_missing(method, *)
underscored_class = self.class.name.gsub(%r{([[:lower:]])([[:upper:]][[:lower:]])}, '\1_\2').downcase
section = underscored_class.downcase.split("::").last
Hbc::Utils.method_missing_message(method, @cask.to_s, section)
nil
if method
underscored_class = self.class.name.gsub(%r{([[:lower:]])([[:upper:]][[:lower:]])}, '\1_\2').downcase
section = underscored_class.downcase.split("::").last
Hbc::Utils.method_missing_message(method, @cask.to_s, section)
nil
else
super
end
end
def respond_to_missing?(*)
true
end
end

View File

@ -25,13 +25,21 @@ class Hbc::DSL::StanzaProxy
coder["resolved"] = @resolver.call
end
def respond_to?(symbol, include_private = false)
return true if %i{encode_with proxy? to_s type}.include?(symbol)
return false if symbol == :to_ary
@resolver.call.respond_to?(symbol, include_private)
def method_missing(method, *args)
if method != :to_ary
@resolver.call.send(method, *args)
else
super
end
end
def method_missing(symbol, *args)
@resolver.call.send(symbol, *args)
def respond_to?(method, include_private = false)
return true if %i{encode_with proxy? to_s type}.include?(method)
return false if method == :to_ary
@resolver.call.respond_to?(method, include_private)
end
def respond_to_missing?(*)
true
end
end

View File

@ -139,15 +139,15 @@ class Hbc::Installer
# dependencies should also apply for "brew cask stage"
# override dependencies with --force or perhaps --force-deps
def satisfy_dependencies
if @cask.depends_on
ohai "Satisfying dependencies"
macos_dependencies
arch_dependencies
x11_dependencies
formula_dependencies
cask_dependencies unless skip_cask_deps
puts "complete"
end
return unless @cask.depends_on
ohai "Satisfying dependencies"
macos_dependencies
arch_dependencies
x11_dependencies
formula_dependencies
cask_dependencies unless skip_cask_deps
puts "complete"
end
def macos_dependencies
@ -159,7 +159,7 @@ class Hbc::Installer
end
elsif @cask.depends_on.macos.length > 1
unless @cask.depends_on.macos.include?(Gem::Version.new(MacOS.version.to_s))
raise Hbc::CaskError, "Cask #{@cask} depends on macOS release being one of [#{@cask.depends_on.macos.map(&:to_s).join(', ')}], but you are running release #{MacOS.version}."
raise Hbc::CaskError, "Cask #{@cask} depends on macOS release being one of [#{@cask.depends_on.macos.map(&:to_s).join(", ")}], but you are running release #{MacOS.version}."
end
else
unless MacOS.version == @cask.depends_on.macos.first
@ -175,7 +175,7 @@ class Hbc::Installer
arch[:type] == @current_arch[:type] &&
Array(arch[:bits]).include?(@current_arch[:bits])
}
raise Hbc::CaskError, "Cask #{@cask} depends on hardware architecture being one of [#{@cask.depends_on.arch.map(&:to_s).join(', ')}], but you are running #{@current_arch}"
raise Hbc::CaskError, "Cask #{@cask} depends on hardware architecture being one of [#{@cask.depends_on.arch.map(&:to_s).join(", ")}], but you are running #{@current_arch}"
end
def x11_dependencies
@ -203,7 +203,7 @@ class Hbc::Installer
def cask_dependencies
return unless @cask.depends_on.cask && !@cask.depends_on.cask.empty?
ohai "Installing Cask dependencies: #{@cask.depends_on.cask.join(', ')}"
ohai "Installing Cask dependencies: #{@cask.depends_on.cask.join(", ")}"
deps = Hbc::CaskDependencies.new(@cask)
deps.sorted.each do |dep_token|
puts "#{dep_token} ..."

View File

@ -11,7 +11,7 @@ class Hbc::Source::TappedQualified < Hbc::Source::Tapped
qualified_token = Hbc::QualifiedToken.parse(query)
return if qualified_token.nil?
user, repo, token = qualified_token
user, repo = qualified_token[0..1]
Tap.fetch(user, repo)
end

View File

@ -123,7 +123,7 @@ class Hbc::SystemCommand::Result
end
def success?
@exit_status == 0
@exit_status.zero?
end
def merged_output

View File

@ -36,7 +36,7 @@ class Hbc::UrlChecker
def _check_response_status
ok = OK_RESPONSES[cask.url.scheme]
return if ok.include?(@response_status)
add_error "unexpected http response, expecting #{ok.map(&:utf8_inspect).join(' or ')}, got #{@response_status.utf8_inspect}"
add_error "unexpected http response, expecting #{ok.map(&:utf8_inspect).join(" or ")}, got #{@response_status.utf8_inspect}"
end
def _get_data_from_request

View File

@ -32,14 +32,15 @@ end
# global methods
def odebug(title, *sput)
if Hbc.respond_to?(:debug) && Hbc.debug
width = Tty.width * 4 - 6
if $stdout.tty? && title.to_s.length > width
title = title.to_s[0, width - 3] + "..."
end
puts "#{Tty.magenta}==>#{Tty.reset} #{Tty.white}#{title}#{Tty.reset}"
puts sput unless sput.empty?
return unless Hbc.respond_to?(:debug)
return unless Hbc.debug
width = Tty.width * 4 - 6
if $stdout.tty? && title.to_s.length > width
title = title.to_s[0, width - 3] + "..."
end
puts "#{Tty.magenta}==>#{Tty.reset} #{Tty.white}#{title}#{Tty.reset}"
puts sput unless sput.empty?
end
module Hbc::Utils

View File

@ -12,7 +12,7 @@ describe Hbc::CLI::Cleanup do
describe "cleanup" do
it "removes cached downloads of given casks" do
cleaned_up_cached_download = 'caffeine'
cleaned_up_cached_download = "caffeine"
cached_downloads = [
cache_location.join("#{cleaned_up_cached_download}--latest.zip"),

View File

@ -9,7 +9,7 @@ end
project_root = Pathname.new(File.expand_path("../..", __FILE__))
# add Homebrew to load path
$LOAD_PATH.unshift(File.expand_path("#{ENV['HOMEBREW_REPOSITORY']}/Library/Homebrew"))
$LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew"))
require "global"

View File

@ -60,7 +60,6 @@ describe Hbc::Artifact::App do
File.exist?(cask.staged_path.join("Caffeine Deluxe.app")).must_equal true
end
describe "avoids clobbering an existing app" do
let(:cask) { local_two_apps_caffeine }
@ -70,8 +69,8 @@ describe Hbc::Artifact::App do
TestHelper.must_output(self, lambda {
Hbc::Artifact::App.new(cask).install_phase
}, <<-EOS.undent.chomp)
==> It seems there is already an App at '#{Hbc.appdir.join('Caffeine Mini.app')}'; not moving.
==> Moving App 'Caffeine Pro.app' to '#{Hbc.appdir.join('Caffeine Pro.app')}'
==> It seems there is already an App at '#{Hbc.appdir.join("Caffeine Mini.app")}'; not moving.
==> Moving App 'Caffeine Pro.app' to '#{Hbc.appdir.join("Caffeine Pro.app")}'
EOS
source_path = cask.staged_path.join("Caffeine Mini.app")
@ -85,8 +84,8 @@ describe Hbc::Artifact::App do
TestHelper.must_output(self, lambda {
Hbc::Artifact::App.new(cask).install_phase
}, <<-EOS.undent.chomp)
==> Moving App 'Caffeine Mini.app' to '#{Hbc.appdir.join('Caffeine Mini.app')}'
==> It seems there is already an App at '#{Hbc.appdir.join('Caffeine Pro.app')}'; not moving.
==> Moving App 'Caffeine Mini.app' to '#{Hbc.appdir.join("Caffeine Mini.app")}'
==> It seems there is already an App at '#{Hbc.appdir.join("Caffeine Pro.app")}'; not moving.
EOS
source_path = cask.staged_path.join("Caffeine Pro.app")

View File

@ -79,9 +79,9 @@ describe Hbc::CLI::List do
Hbc::CLI::List.run("local-transmission", "local-caffeine")
}.must_output <<-EOS.undent
==> Apps
#{Hbc.appdir.join('Transmission.app')} (#{Hbc.appdir.join('Transmission.app').abv})
#{Hbc.appdir.join("Transmission.app")} (#{Hbc.appdir.join("Transmission.app").abv})
==> Apps
Missing App: #{Hbc.appdir.join('Caffeine.app')}
Missing App: #{Hbc.appdir.join("Caffeine.app")}
EOS
end
end

View File

@ -10,7 +10,7 @@ project_root = Pathname.new(File.expand_path("../..", __FILE__))
tap_root = Pathname.new(ENV["HOMEBREW_LIBRARY"]).join("Taps", "caskroom", "homebrew-cask")
# add Homebrew to load path
$LOAD_PATH.unshift(File.expand_path("#{ENV['HOMEBREW_REPOSITORY']}/Library/Homebrew"))
$LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew"))
require "global"

View File

@ -69,27 +69,34 @@ class Caveats
end
def bash_completion_caveats
if keg && keg.completion_installed?(:bash) then <<-EOS.undent
return unless keg
return unless keg.completion_installed?(:bash)
<<-EOS.undent
Bash completion has been installed to:
#{HOMEBREW_PREFIX}/etc/bash_completion.d
EOS
end
EOS
end
def zsh_completion_caveats
if keg && keg.completion_installed?(:zsh) then <<-EOS.undent
return unless keg
return unless keg.completion_installed?(:zsh)
<<-EOS.undent
zsh completion has been installed to:
#{HOMEBREW_PREFIX}/share/zsh/site-functions
EOS
end
EOS
end
def fish_completion_caveats
if keg && keg.completion_installed?(:fish) && which("fish") then <<-EOS.undent
return unless keg
return unless keg.completion_installed?(:fish)
return unless which("fish")
<<-EOS.undent
fish completion has been installed to:
#{HOMEBREW_PREFIX}/share/fish/vendor_completions.d
EOS
end
EOS
end
def python_caveats
@ -140,22 +147,24 @@ class Caveats
end
def app_caveats
if keg && keg.app_installed?
<<-EOS.undent
.app bundles were installed.
Run `brew linkapps #{keg.name}` to symlink these to /Applications.
EOS
end
return unless keg
return unless keg.app_installed?
<<-EOS.undent
.app bundles were installed.
Run `brew linkapps #{keg.name}` to symlink these to /Applications.
EOS
end
def elisp_caveats
return if f.keg_only?
if keg && keg.elisp_installed?
<<-EOS.undent
Emacs Lisp files have been installed to:
#{HOMEBREW_PREFIX}/share/emacs/site-lisp/#{f.name}
EOS
end
return unless keg
return unless keg.elisp_installed?
<<-EOS.undent
Emacs Lisp files have been installed to:
#{HOMEBREW_PREFIX}/share/emacs/site-lisp/#{f.name}
EOS
end
def plist_caveats

View File

@ -87,9 +87,9 @@ class Cleaner
Find.prune if @f.skip_clean? path
if path.symlink? || path.directory?
next
elsif path.extname == ".la"
next if path.symlink? || path.directory?
if path.extname == ".la"
path.unlink
elsif path.basename.to_s == "perllocal.pod"
# Both this file & the .packlist one below are completely unnecessary

View File

@ -12,7 +12,7 @@ module Homebrew
cleanup_logs
unless ARGV.dry_run?
cleanup_lockfiles
rm_DS_Store
rm_ds_store
end
end
@ -66,7 +66,7 @@ module Homebrew
next unless path.file?
file = path
if Pathname::BOTTLE_EXTNAME_RX === file.to_s
if file.to_s =~ Pathname::BOTTLE_EXTNAME_RX
version = begin
Utils::Bottles.resolve_version(file)
rescue
@ -86,7 +86,7 @@ module Homebrew
next
end
file_is_stale = if PkgVersion === version
file_is_stale = if version.is_a?(PkgVersion)
f.pkg_version > version
else
f.version > version
@ -119,7 +119,7 @@ module Homebrew
end
end
def self.rm_DS_Store
def self.rm_ds_store
paths = Queue.new
%w[Cellar Frameworks Library bin etc include lib opt sbin share var]
.map { |p| HOMEBREW_PREFIX/p }.each { |p| paths << p if p.exist? }

View File

@ -22,13 +22,13 @@ module Homebrew
ARGV.resolved_formulae.each { |f| Cleanup.cleanup_formula f }
end
if Cleanup.disk_cleanup_size > 0
disk_space = disk_usage_readable(Cleanup.disk_cleanup_size)
if ARGV.dry_run?
ohai "This operation would free approximately #{disk_space} of disk space."
else
ohai "This operation has freed approximately #{disk_space} of disk space."
end
return if Cleanup.disk_cleanup_size.zero?
disk_space = disk_usage_readable(Cleanup.disk_cleanup_size)
if ARGV.dry_run?
ohai "This operation would free approximately #{disk_space} of disk space."
else
ohai "This operation has freed approximately #{disk_space} of disk space."
end
end
end

View File

@ -31,11 +31,9 @@ module Homebrew
def detect_version(path)
version = path.version.to_s
if version.empty?
raise "Couldn't determine version, set it with --version=<version>"
else
version
end
raise "Couldn't determine version, set it with --version=<version>" if version.empty?
version
end
def detect_name(path, version)

View File

@ -54,11 +54,8 @@ module Homebrew
end
rescue FormulaUnavailableError
# No formula with this name, try a blacklist lookup
if (blacklist = blacklisted?(f))
puts blacklist
else
raise
end
raise unless (blacklist = blacklisted?(f))
puts blacklist
end
end
end

View File

@ -245,11 +245,11 @@ module Homebrew
end
def check_macports
unless MacOS.macports_or_fink.empty?
opoo "It appears you have MacPorts or Fink installed."
puts "Software installed with other package managers causes known problems for"
puts "Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again."
end
return if MacOS.macports_or_fink.empty?
opoo "It appears you have MacPorts or Fink installed."
puts "Software installed with other package managers causes known problems for"
puts "Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again."
end
def check_cellar

View File

@ -58,10 +58,11 @@ module Homebrew
def restore_backup(keg, formula)
path = backup_path(keg)
if path.directory?
path.rename keg
keg.link unless formula.keg_only?
end
return unless path.directory?
path.rename keg
keg.link unless formula.keg_only?
end
def backup_path(path)

View File

@ -150,7 +150,7 @@ module Homebrew
names = remote_tap_formulae["#{user}/#{repo}"]
user = user.downcase if user == "Homebrew" # special handling for the Homebrew organization
names.select { |name| rx === name }.map { |name| "#{user}/#{repo}/#{name}" }
names.select { |name| name =~ rx }.map { |name| "#{user}/#{repo}/#{name}" }
rescue GitHub::HTTPNotFoundError
opoo "Failed to search tap: #{user}/#{repo}. Please run `brew update`"
[]
@ -171,10 +171,11 @@ module Homebrew
rescue
canonical_name = canonical_full_name = name
end
# Ignore aliases from results when the full name was also found
if aliases.include?(name) && results.include?(canonical_full_name)
next
elsif (HOMEBREW_CELLAR/canonical_name).directory?
next if aliases.include?(name) && results.include?(canonical_full_name)
if (HOMEBREW_CELLAR/canonical_name).directory?
pretty_installed(name)
else
name

View File

@ -45,7 +45,7 @@ module Homebrew
def check_style_impl(files, output_type, options = {})
fix = options[:fix]
Homebrew.install_gem_setup_path! "rubocop", "0.41.2"
Homebrew.install_gem_setup_path! "rubocop", "0.43.0"
args = %W[
--force-exclusion
@ -54,20 +54,22 @@ module Homebrew
args << "--auto-correct" if fix
args += files
case output_type
when :print
args << "--display-cop-names" if ARGV.include? "--display-cop-names"
system "rubocop", "--format", "simple", *args
!$?.success?
when :json
json = Utils.popen_read_text("rubocop", "--format", "json", *args)
# exit status of 1 just means violations were found; other numbers mean execution errors
# exitstatus can also be nil if RuboCop process crashes, e.g. due to
# native extension problems
raise "Error while running RuboCop" if $?.exitstatus.nil? || $?.exitstatus > 1
RubocopResults.new(Utils::JSON.load(json))
else
raise "Invalid output_type for check_style_impl: #{output_type}"
HOMEBREW_LIBRARY.cd do
case output_type
when :print
args << "--display-cop-names" if ARGV.include? "--display-cop-names"
system "rubocop", "--format", "simple", *args
!$?.success?
when :json
json = Utils.popen_read_text("rubocop", "--format", "json", *args)
# exit status of 1 just means violations were found; other numbers mean execution errors
# exitstatus can also be nil if RuboCop process crashes, e.g. due to
# native extension problems
raise "Error while running RuboCop" if $?.exitstatus.nil? || $?.exitstatus > 1
RubocopResults.new(Utils::JSON.load(json))
else
raise "Invalid output_type for check_style_impl: #{output_type}"
end
end
end

View File

@ -16,7 +16,7 @@ class CxxStdlib
if type && ![:libstdcxx, :libcxx].include?(type)
raise ArgumentError, "Invalid C++ stdlib type: #{type}"
end
klass = GNU_GCC_REGEXP === compiler.to_s ? GnuStdlib : AppleStdlib
klass = compiler.to_s =~ GNU_GCC_REGEXP ? GnuStdlib : AppleStdlib
klass.new(type, compiler)
end

View File

@ -118,20 +118,22 @@ module Debrew
menu.prompt = "Choose an action: "
menu.choice(:raise) { original_raise(e) }
menu.choice(:ignore) { return :ignore } if Ignorable === e
menu.choice(:ignore) { return :ignore } if e.is_a?(Ignorable)
menu.choice(:backtrace) { puts e.backtrace }
menu.choice(:irb) do
puts "When you exit this IRB session, execution will continue."
set_trace_func proc { |event, _, _, id, binding, klass|
if klass == Raise && id == :raise && event == "return"
set_trace_func(nil)
synchronize { IRB.start_within(binding) }
end
}
if e.is_a?(Ignorable)
menu.choice(:irb) do
puts "When you exit this IRB session, execution will continue."
set_trace_func proc { |event, _, _, id, binding, klass|
if klass == Raise && id == :raise && event == "return"
set_trace_func(nil)
synchronize { IRB.start_within(binding) }
end
}
return :ignore
end if Ignorable === e
return :ignore
end
end
menu.choice(:shell) do
puts "When you exit this shell, you will return to the menu."

View File

@ -69,7 +69,7 @@ class Requirements
end
def <<(other)
if Comparable === other
if other.is_a?(Comparable)
@reqs.grep(other.class) do |req|
return self if req > other
@reqs.delete(req)

View File

@ -49,7 +49,7 @@ class DependencyCollector
end
def cache_key(spec)
if Resource === spec && spec.download_strategy == CurlDownloadStrategy
if spec.is_a?(Resource) && spec.download_strategy == CurlDownloadStrategy
File.extname(spec.url)
else
spec
@ -57,7 +57,7 @@ class DependencyCollector
end
def build(spec)
spec, tags = Hash === spec ? spec.first : spec
spec, tags = spec.is_a?(Hash) ? spec.first : spec
parse_spec(spec, Array(tags))
end
@ -81,7 +81,7 @@ class DependencyCollector
end
def parse_string_spec(spec, tags)
if HOMEBREW_TAP_FORMULA_REGEX === spec
if spec =~ HOMEBREW_TAP_FORMULA_REGEX
TapDependency.new(spec, tags)
elsif tags.empty?
Dependency.new(spec, tags)
@ -165,11 +165,11 @@ class DependencyCollector
def parse_url_spec(url, tags)
case File.extname(url)
when ".xz" then Dependency.new("xz", tags)
when ".xz" then Dependency.new("xz", tags)
when ".lha", ".lzh" then Dependency.new("lha", tags)
when ".lz" then Dependency.new("lzip", tags)
when ".rar" then Dependency.new("unrar", tags)
when ".7z" then Dependency.new("p7zip", tags)
when ".lz" then Dependency.new("lzip", tags)
when ".rar" then Dependency.new("unrar", tags)
when ".7z" then Dependency.new("p7zip", tags)
end
end
end

View File

@ -12,9 +12,7 @@ class Descriptions
# If the cache file exists, load it into, and return, a hash; otherwise,
# return nil.
def self.load_cache
if CACHE_FILE.exist?
@cache = Utils::JSON.load(CACHE_FILE.read)
end
@cache = Utils::JSON.load(CACHE_FILE.read) if CACHE_FILE.exist?
end
# Write the cache to disk after ensuring the existence of the containing
@ -138,6 +136,6 @@ class Descriptions
def short_name_counts
@short_name_counts ||=
short_names.values.each_with_object(Hash.new(0)) { |name, counts| counts[name] += 1; counts }
short_names.values.each_with_object(Hash.new(0)) { |name, counts| counts[name] += 1 }
end
end

View File

@ -83,11 +83,11 @@ module Homebrew
end
end
unless problem_count.zero?
problems = "problem" + plural(problem_count)
formulae = "formula" + plural(formula_count, "e")
ofail "#{problem_count} #{problems} in #{formula_count} #{formulae}"
end
return if problem_count.zero?
problems = "problem" + plural(problem_count)
formulae = "formula" + plural(formula_count, "e")
ofail "#{problem_count} #{problems} in #{formula_count} #{formulae}"
end
end
@ -279,9 +279,11 @@ class FormulaAuditor
end
end
end
if present.include?("head") && present.include?("head block")
problem "Should not have both `head` and `head do`"
end
if present.include?("bottle modifier") && present.include?("bottle block")
problem "Should not have `bottle :unneeded/:disable` and `bottle do`"
end
@ -467,7 +469,7 @@ class FormulaAuditor
# Make sure the formula name plus description is no longer than 80 characters
# Note full_name includes the name of the tap, while name does not
linelength = formula.name.length + ": ".length + desc.length
linelength = "#{formula.name}: #{desc}".length
if linelength > 80
problem <<-EOS.undent
Description is too long. \"name: desc\" should be less than 80 characters.
@ -668,24 +670,26 @@ class FormulaAuditor
end
revision_map = attributes_map[:revision]
if formula.revision.nonzero?
if formula.stable
if revision_map[formula.stable.version].empty? # check stable spec
problem "'revision #{formula.revision}' should be removed"
end
else # head/devel-only formula
return if formula.revision.zero?
if formula.stable
if revision_map[formula.stable.version].empty? # check stable spec
problem "'revision #{formula.revision}' should be removed"
end
else # head/devel-only formula
problem "'revision #{formula.revision}' should be removed"
end
end
def audit_legacy_patches
return unless formula.respond_to?(:patches)
legacy_patches = Patch.normalize_legacy_patches(formula.patches).grep(LegacyPatch)
unless legacy_patches.empty?
problem "Use the patch DSL instead of defining a 'patches' method"
legacy_patches.each { |p| audit_patch(p) }
end
return if legacy_patches.empty?
problem "Use the patch DSL instead of defining a 'patches' method"
legacy_patches.each { |p| audit_patch(p) }
end
def audit_patch(patch)
@ -961,61 +965,56 @@ class FormulaAuditor
problem "Use Language::Node for npm install args"
end
if @strict
if line =~ /system ((["'])[^"' ]*(?:\s[^"' ]*)+\2)/
bad_system = $1
unless %w[| < > & ; *].any? { |c| bad_system.include? c }
good_system = bad_system.gsub(" ", "\", \"")
problem "Use `system #{good_system}` instead of `system #{bad_system}` "
end
end
return unless @strict
if line =~ /(require ["']formula["'])/
problem "`#{$1}` is now unnecessary"
if line =~ /system ((["'])[^"' ]*(?:\s[^"' ]*)+\2)/
bad_system = $1
unless %w[| < > & ; *].any? { |c| bad_system.include? c }
good_system = bad_system.gsub(" ", "\", \"")
problem "Use `system #{good_system}` instead of `system #{bad_system}` "
end
end
if line =~ %r{#\{share\}/#{Regexp.escape(formula.name)}[/'"]}
problem "Use \#{pkgshare} instead of \#{share}/#{formula.name}"
end
if line =~ /(require ["']formula["'])/
problem "`#{$1}` is now unnecessary"
end
if line =~ %r{share(\s*[/+]\s*)(['"])#{Regexp.escape(formula.name)}(?:\2|/)}
problem "Use pkgshare instead of (share#{$1}\"#{formula.name}\")"
end
if line =~ %r{#\{share\}/#{Regexp.escape(formula.name)}[/'"]}
problem "Use \#{pkgshare} instead of \#{share}/#{formula.name}"
end
if line =~ %r{share(\s*[/+]\s*)(['"])#{Regexp.escape(formula.name)}(?:\2|/)}
problem "Use pkgshare instead of (share#{$1}\"#{formula.name}\")"
end
end
def audit_caveats
caveats = formula.caveats.to_s
if caveats.include?("setuid")
problem "Don't recommend setuid in the caveats, suggest sudo instead."
end
return unless formula.caveats.to_s.include?("setuid")
problem "Don't recommend setuid in the caveats, suggest sudo instead."
end
def audit_reverse_migration
# Only enforce for new formula being re-added to core and official taps
return unless @strict
return unless formula.tap && formula.tap.official?
return unless formula.tap.tap_migrations.key?(formula.name)
if formula.tap.tap_migrations.key?(formula.name)
problem <<-EOS.undent
#{formula.name} seems to be listed in tap_migrations.json!
Please remove #{formula.name} from present tap & tap_migrations.json
before submitting it to Homebrew/homebrew-#{formula.tap.repo}.
EOS
end
problem <<-EOS.undent
#{formula.name} seems to be listed in tap_migrations.json!
Please remove #{formula.name} from present tap & tap_migrations.json
before submitting it to Homebrew/homebrew-#{formula.tap.repo}.
EOS
end
def audit_prefix_has_contents
return unless formula.prefix.directory?
return unless Keg.new(formula.prefix).empty_installation?
if Keg.new(formula.prefix).empty_installation?
problem <<-EOS.undent
The installation seems to be empty. Please ensure the prefix
is set correctly and expected files are installed.
The prefix configure/make argument may be case-sensitive.
EOS
end
problem <<-EOS.undent
The installation seems to be empty. Please ensure the prefix
is set correctly and expected files are installed.
The prefix configure/make argument may be case-sensitive.
EOS
end
def audit_conditional_dep(dep, condition, line)
@ -1184,9 +1183,7 @@ class ResourceAuditor
end
end
using_strategy = DownloadStrategyDetector.detect("", using)
if url_strategy == using_strategy
if url_strategy == DownloadStrategyDetector.detect("", using)
problem "Redundant :using value in URL"
end
end

View File

@ -51,10 +51,11 @@ module Homebrew
end
@put_filenames ||= []
unless @put_filenames.include? filename
puts "#{Tty.red}#{filename}#{Tty.reset}"
@put_filenames << filename
end
return if @put_filenames.include? filename
puts "#{Tty.red}#{filename}#{Tty.reset}"
@put_filenames << filename
end
result = false
@ -107,9 +108,7 @@ module Homebrew
absolute_symlinks_start_with_string = []
keg.find do |pn|
next unless pn.symlink? && (link = pn.readlink).absolute?
if link.to_s.start_with?(string)
absolute_symlinks_start_with_string << pn
end
absolute_symlinks_start_with_string << pn if link.to_s.start_with?(string)
end
if ARGV.verbose?
@ -137,11 +136,11 @@ module Homebrew
tap = f.tap
unless tap
if ARGV.include?("--force-core-tap")
tap = CoreTap.instance
else
unless ARGV.include?("--force-core-tap")
return ofail "Formula not from core or any taps: #{f.full_name}"
end
tap = CoreTap.instance
end
if f.bottle_disabled?
@ -154,9 +153,7 @@ module Homebrew
return ofail "Formula not installed with '--build-bottle': #{f.full_name}"
end
unless f.stable
return ofail "Formula has no stable version: #{f.full_name}"
end
return ofail "Formula has no stable version: #{f.full_name}" unless f.stable
if ARGV.include?("--no-rebuild") || !f.tap
rebuild = 0
@ -323,34 +320,33 @@ module Homebrew
puts "./#{filename}"
puts output
if ARGV.include? "--json"
json = {
f.full_name => {
"formula" => {
"pkg_version" => f.pkg_version.to_s,
"path" => f.path.to_s.strip_prefix("#{HOMEBREW_REPOSITORY}/"),
},
"bottle" => {
"root_url" => bottle.root_url,
"prefix" => bottle.prefix,
"cellar" => bottle.cellar.to_s,
"rebuild" => bottle.rebuild,
"tags" => {
Utils::Bottles.tag.to_s => {
"filename" => filename.to_s,
"sha256" => sha256,
},
return unless ARGV.include? "--json"
json = {
f.full_name => {
"formula" => {
"pkg_version" => f.pkg_version.to_s,
"path" => f.path.to_s.strip_prefix("#{HOMEBREW_REPOSITORY}/"),
},
"bottle" => {
"root_url" => bottle.root_url,
"prefix" => bottle.prefix,
"cellar" => bottle.cellar.to_s,
"rebuild" => bottle.rebuild,
"tags" => {
Utils::Bottles.tag.to_s => {
"filename" => filename.to_s,
"sha256" => sha256,
},
},
"bintray" => {
"package" => Utils::Bottles::Bintray.package(f.name),
"repository" => Utils::Bottles::Bintray.repository(tap),
},
},
}
File.open("#{filename.prefix}.bottle.json", "w") do |file|
file.write Utils::JSON.dump json
end
"bintray" => {
"package" => Utils::Bottles::Bintray.package(f.name),
"repository" => Utils::Bottles::Bintray.repository(tap),
},
},
}
File.open("#{filename.prefix}.bottle.json", "w") do |file|
file.write Utils::JSON.dump json
end
end
@ -436,7 +432,7 @@ module Homebrew
puts output
update_or_add = "add"
if s.include? "stable do"
indent = s.slice(/^ +stable do/).length - "stable do".length
indent = s.slice(/^( +)stable do/, 1).length
string = s.sub!(/^ {#{indent}}stable do(.|\n)+?^ {#{indent}}end\n/m, '\0' + output + "\n")
else
string = s.sub!(

View File

@ -33,9 +33,9 @@ module Homebrew
# Don't use ARGV.formulae as that will throw if the file doesn't parse
paths = ARGV.named.map do |name|
path = Formulary.path(name)
unless path.file? || ARGV.force?
raise FormulaUnavailableError, name
end
raise FormulaUnavailableError, name unless path.file? || ARGV.force?
path
end
exec_editor(*paths)

View File

@ -4,9 +4,7 @@
module Homebrew
def mirror
if ARGV.named.empty?
odie "This command requires at least formula argument!"
end
odie "This command requires at least formula argument!" if ARGV.named.empty?
bintray_user = ENV["BINTRAY_USER"]
bintray_key = ENV["BINTRAY_KEY"]

View File

@ -41,12 +41,12 @@ require "pkg_version"
module Homebrew
def pull
if ARGV[0] == "--rebase"
odie "You meant `git pull --rebase`."
end
odie "You meant `git pull --rebase`." if ARGV[0] == "--rebase"
if ARGV.named.empty?
odie "This command requires at least one argument containing a URL or pull request number"
end
do_bump = ARGV.include?("--bump") && !ARGV.include?("--clean")
# Formulae with affected bottles that were published
@ -429,9 +429,9 @@ module Homebrew
# Returns nil if formula is absent or if there was an error reading it
def self.lookup(name)
json = Utils.popen_read(HOMEBREW_BREW_FILE, "info", "--json=v1", name)
unless $?.success?
return nil
end
return nil unless $?.success?
Homebrew.force_utf8!(json)
FormulaInfoFromJson.new(Utils::JSON.load(json)[0])
end

View File

@ -185,8 +185,8 @@ module Homebrew
def puts_result
if ENV["TRAVIS"]
travis_start_time = @start_time.to_i*1000000000
travis_end_time = @end_time.to_i*1000000000
travis_start_time = @start_time.to_i * 1_000_000_000
travis_end_time = @end_time.to_i * 1_000_000_000
travis_duration = travis_end_time - travis_start_time
puts "#{Tty.white}==>#{Tty.green} PASSED#{Tty.reset}" if passed?
puts "travis_time:end:#{@travis_timer_id},start=#{travis_start_time},finish=#{travis_end_time},duration=#{travis_duration}"
@ -563,11 +563,10 @@ module Homebrew
(installed & dependencies).each do |installed_dependency|
installed_dependency_formula = Formulary.factory(installed_dependency)
if installed_dependency_formula.installed? &&
!installed_dependency_formula.keg_only? &&
!installed_dependency_formula.linked_keg.exist?
test "brew", "link", installed_dependency
end
next unless installed_dependency_formula.installed?
next if installed_dependency_formula.keg_only?
next if installed_dependency_formula.linked_keg.exist?
test "brew", "link", installed_dependency
end
dependencies -= installed
@ -725,9 +724,7 @@ module Homebrew
coverage_args = []
if ARGV.include?("--coverage")
if ENV["JENKINS_HOME"]
if OS.mac? && MacOS.version == :sierra
coverage_args << "--coverage"
end
coverage_args << "--coverage" if OS.mac? && MacOS.version == :sierra
else
coverage_args << "--coverage"
end
@ -742,9 +739,7 @@ module Homebrew
test "brew", "cask-tests", *coverage_args
end
elsif @tap
if @tap.name == "homebrew/core"
test "brew", "style", @tap.name
end
test "brew", "style", @tap.name if @tap.name == "homebrew/core"
test "brew", "readall", "--aliases", @tap.name
end
end
@ -1055,9 +1050,7 @@ module Homebrew
ARGV << "--junit" << "--local" << "--test-default-formula"
end
if ARGV.include? "--ci-master"
ARGV << "--fast"
end
ARGV << "--fast" if ARGV.include?("--ci-master")
if ARGV.include? "--local"
ENV["HOMEBREW_CACHE"] = "#{ENV["HOME"]}/Library/Caches/Homebrew"
@ -1081,9 +1074,7 @@ module Homebrew
safe_system "brew", "tap", tap.name, "--full"
end
if ARGV.include? "--ci-upload"
return test_ci_upload(tap)
end
return test_ci_upload(tap) if ARGV.include?("--ci-upload")
tests = []
any_errors = false

View File

@ -39,15 +39,11 @@ module Homebrew
vols = get_mounts path
# no volume found
if vols.empty?
return -1
end
return -1 if vols.empty?
vol_index = @volumes.index(vols[0])
# volume not found in volume list
if vol_index.nil?
return -1
end
return -1 if vol_index.nil?
vol_index
end
@ -82,8 +78,8 @@ module Homebrew
end
end
def inject_file_list(list, str)
list.inject(str) { |s, f| s << " #{f}\n" }
def inject_file_list(list, string)
list.inject(string) { |a, e| a << " #{e}\n" }
end
############# END HELPERS
@ -599,7 +595,7 @@ module Homebrew
EOS
end
def check_DYLD_vars
def check_dyld_vars
dyld_vars = ENV.keys.grep(/^DYLD_/)
return if dyld_vars.empty?
@ -758,7 +754,7 @@ module Homebrew
cd #{HOMEBREW_REPOSITORY}
git remote add origin https://github.com/Homebrew/brew.git
EOS
elsif origin !~ /Homebrew\/brew(\.git)?$/
elsif origin !~ %r{Homebrew/brew(\.git)?$}
<<-EOS.undent
Suspicious git origin remote found.

View File

@ -663,19 +663,19 @@ class GitDownloadStrategy < VCSDownloadStrategy
@shallow && support_depth?
end
def is_shallow_clone?
def shallow_dir?
git_dir.join("shallow").exist?
end
def support_depth?
@ref_type != :revision && SHALLOW_CLONE_WHITELIST.any? { |rx| rx === @url }
@ref_type != :revision && SHALLOW_CLONE_WHITELIST.any? { |regex| @url =~ regex }
end
def git_dir
cached_location.join(".git")
end
def has_ref?
def ref?
quiet_system "git", "--git-dir", git_dir, "rev-parse", "-q", "--verify", "#{@ref}^{commit}"
end
@ -696,7 +696,8 @@ class GitDownloadStrategy < VCSDownloadStrategy
args << "--depth" << "1" if shallow_clone?
case @ref_type
when :branch, :tag then args << "--branch" << @ref
when :branch, :tag
args << "--branch" << @ref
end
args << @url << cached_location
@ -716,8 +717,8 @@ class GitDownloadStrategy < VCSDownloadStrategy
end
def update_repo
if @ref_type == :branch || !has_ref?
if !shallow_clone? && is_shallow_clone?
if @ref_type == :branch || !ref?
if !shallow_clone? && shallow_dir?
quiet_safe_system "git", "fetch", "origin", "--unshallow"
else
quiet_safe_system "git", "fetch", "origin"
@ -741,9 +742,11 @@ class GitDownloadStrategy < VCSDownloadStrategy
def reset_args
ref = case @ref_type
when :branch then "origin/#{@ref}"
when :revision, :tag then @ref
end
when :branch
"origin/#{@ref}"
when :revision, :tag
@ref
end
%W[reset --hard #{ref}]
end
@ -1021,9 +1024,9 @@ class DownloadStrategyDetector
def self.detect(url, strategy = nil)
if strategy.nil?
detect_from_url(url)
elsif Class === strategy && strategy < AbstractDownloadStrategy
elsif strategy.is_a?(Class) && strategy < AbstractDownloadStrategy
strategy
elsif Symbol === strategy
elsif strategy.is_a?(Symbol)
detect_from_symbol(strategy)
else
raise TypeError,

View File

@ -216,7 +216,7 @@ module HomebrewArgvExtension
end
def build_all_from_source?
!!ENV["HOMEBREW_BUILD_FROM_SOURCE"]
!ENV["HOMEBREW_BUILD_FROM_SOURCE"].nil?
end
# Whether a given formula should be built from source during the current

View File

@ -192,15 +192,11 @@ module Stdenv
end
def libcxx
if compiler == :clang
append "CXX", "-stdlib=libc++"
end
append "CXX", "-stdlib=libc++" if compiler == :clang
end
def libstdcxx
if compiler == :clang
append "CXX", "-stdlib=libstdc++"
end
append "CXX", "-stdlib=libstdc++" if compiler == :clang
end
# @private

View File

@ -64,9 +64,7 @@ module Superenv
self["HOMEBREW_INCLUDE_PATHS"] = determine_include_paths
self["HOMEBREW_LIBRARY_PATHS"] = determine_library_paths
self["HOMEBREW_DEPENDENCIES"] = determine_dependencies
unless formula.nil?
self["HOMEBREW_FORMULA_PREFIX"] = formula.prefix
end
self["HOMEBREW_FORMULA_PREFIX"] = formula.prefix unless formula.nil?
# The HOMEBREW_CCCFG ENV variable is used by the ENV/cc tool to control
# compiler flag stripping. It consists of a string of characters which act

View File

@ -1,5 +1,2 @@
require "blacklist"
if OS.mac?
require "extend/os/mac/blacklist"
end
require "extend/os/mac/blacklist" if OS.mac?

View File

@ -1,5 +1,2 @@
require "utils/bottles"
if OS.mac?
require "extend/os/mac/utils/bottles"
end
require "extend/os/mac/utils/bottles" if OS.mac?

View File

@ -1,5 +1,2 @@
require "cleaner"
if OS.mac?
require "extend/os/mac/cleaner"
end
require "extend/os/mac/cleaner" if OS.mac?

View File

@ -1,5 +1,2 @@
require "dependency_collector"
if OS.mac?
require "extend/os/mac/dependency_collector"
end
require "extend/os/mac/dependency_collector" if OS.mac?

View File

@ -1,5 +1,2 @@
require "development_tools"
if OS.mac?
require "extend/os/mac/development_tools"
end
require "extend/os/mac/development_tools" if OS.mac?

View File

@ -1,5 +1,2 @@
require "diagnostic"
if OS.mac?
require "extend/os/mac/diagnostic"
end
require "extend/os/mac/diagnostic" if OS.mac?

View File

@ -1,6 +1,3 @@
require "os"
require "emoji"
if OS.mac?
require "extend/os/mac/emoji"
end
require "extend/os/mac/emoji" if OS.mac?

View File

@ -1,5 +1,2 @@
require "extend/ENV/shared"
if OS.mac?
require "extend/os/mac/extend/ENV/shared"
end
require "extend/os/mac/extend/ENV/shared" if OS.mac?

View File

@ -1,5 +1,2 @@
require "extend/ENV/std"
if OS.mac?
require "extend/os/mac/extend/ENV/std"
end
require "extend/os/mac/extend/ENV/std" if OS.mac?

View File

@ -1,5 +1,2 @@
require "extend/ENV/super"
if OS.mac?
require "extend/os/mac/extend/ENV/super"
end
require "extend/os/mac/extend/ENV/super" if OS.mac?

View File

@ -1,5 +1,2 @@
require "formula_cellar_checks"
if OS.mac?
require "extend/os/mac/formula_cellar_checks"
end
require "extend/os/mac/formula_cellar_checks" if OS.mac?

View File

@ -1,5 +1,2 @@
require "keg_relocate"
if OS.mac?
require "extend/os/mac/keg_relocate"
end
require "extend/os/mac/keg_relocate" if OS.mac?

View File

@ -2,13 +2,8 @@ module SharedEnvExtension
def no_weak_imports_support?
return false unless compiler == :clang
if MacOS::Xcode.version && MacOS::Xcode.version < "8.0"
return false
end
if MacOS::CLT.version && MacOS::CLT.version < "8.0"
return false
end
return false if MacOS::Xcode.version && MacOS::Xcode.version < "8.0"
return false if MacOS::CLT.version && MacOS::CLT.version < "8.0"
true
end

View File

@ -1,5 +1,2 @@
require "system_config"
if OS.mac?
require "extend/os/mac/system_config"
end
require "extend/os/mac/system_config" if OS.mac?

View File

@ -71,13 +71,13 @@ class Pathname
when Array
if src.empty?
opoo "tried to install empty array to #{self}"
return
break
end
src.each { |s| install_p(s, File.basename(s)) }
when Hash
if src.empty?
opoo "tried to install empty hash to #{self}"
return
break
end
src.each { |s, new_basename| install_p(s, new_basename) }
else

View File

@ -395,9 +395,7 @@ class Formula
def oldname
@oldname ||= if tap
formula_renames = tap.formula_renames
if formula_renames.value?(name)
formula_renames.to_a.rassoc(name).first
end
formula_renames.to_a.rassoc(name).first if formula_renames.value?(name)
end
end
@ -1052,7 +1050,7 @@ class Formula
self.class.link_overwrite_paths.any? do |p|
p == to_check ||
to_check.start_with?(p.chomp("/") + "/") ||
/^#{Regexp.escape(p).gsub('\*', ".*?")}$/ === to_check
to_check =~ /^#{Regexp.escape(p).gsub('\*', ".*?")}$/
end
end
@ -1246,7 +1244,7 @@ class Formula
# @private
def <=>(other)
return unless Formula === other
return unless other.is_a?(Formula)
name <=> other.name
end
@ -1776,9 +1774,7 @@ class Formula
ENV["HOMEBREW_CC_LOG_PATH"] = logfn
# TODO: system "xcodebuild" is deprecated, this should be removed soon.
if cmd.to_s.start_with? "xcodebuild"
ENV.remove_cc_etc
end
ENV.remove_cc_etc if cmd.to_s.start_with? "xcodebuild"
# Turn on argument filtering in the superenv compiler wrapper.
# We should probably have a better mechanism for this than adding
@ -1786,9 +1782,7 @@ class Formula
if cmd == "python"
setup_py_in_args = %w[setup.py build.py].include?(args.first)
setuptools_shim_in_args = args.any? { |a| a.to_s.start_with? "import setuptools" }
if setup_py_in_args || setuptools_shim_in_args
ENV.refurbish_args
end
ENV.refurbish_args if setup_py_in_args || setuptools_shim_in_args
end
$stdout.reopen(out)
@ -2226,7 +2220,7 @@ class Formula
# If this formula conflicts with another one.
# <pre>conflicts_with "imagemagick", :because => "because this is just a stupid example"</pre>
def conflicts_with(*names)
opts = Hash === names.last ? names.pop : {}
opts = names.last.is_a?(Hash) ? names.pop : {}
names.each { |name| conflicts << FormulaConflict.new(name, opts[:because]) }
end

View File

@ -1,7 +1,7 @@
require "utils/shell"
module FormulaCellarChecks
def check_PATH(bin)
def check_env_path(bin)
# warn the user if stuff was installed outside of their PATH
return unless bin.directory?
return if bin.children.empty?

View File

@ -24,7 +24,9 @@ class FormulaInstaller
private(*names)
names.each do |name|
predicate = "#{name}?"
define_method(predicate) { !!send(name) }
define_method(predicate) do
send(name) ? true : false
end
private(predicate)
end
end
@ -71,7 +73,8 @@ class FormulaInstaller
end
def build_bottle?
!!@build_bottle && !formula.bottle_disabled?
return false unless @build_bottle
!formula.bottle_disabled?
end
def pour_bottle?(install_bottle_options = { warn: false })
@ -254,9 +257,7 @@ class FormulaInstaller
unless @poured_bottle
not_pouring = !pour_bottle || @pour_failed
if not_pouring && !ignore_deps?
compute_and_install_dependencies
end
compute_and_install_dependencies if not_pouring && !ignore_deps?
build
clean
end
@ -543,7 +544,7 @@ class FormulaInstaller
@build_time ||= Time.now - @start_time if @start_time && !interactive?
end
def sanitized_ARGV_options
def sanitized_argv_options
args = []
args << "--ignore-dependencies" if ignore_deps?
@ -582,7 +583,7 @@ class FormulaInstaller
end
def build_argv
sanitized_ARGV_options + options.as_flags
sanitized_argv_options + options.as_flags
end
def build
@ -810,8 +811,8 @@ class FormulaInstaller
end
def audit_installed
audit_check_output(check_PATH(formula.bin))
audit_check_output(check_PATH(formula.sbin))
audit_check_output(check_env_path(formula.bin))
audit_check_output(check_env_path(formula.sbin))
super
end

View File

@ -35,9 +35,8 @@ class FormulaLock
if @lockfile.nil? || @lockfile.closed?
@lockfile = @path.open(File::RDWR | File::CREAT)
@lockfile.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
@lockfile
else
@lockfile
end
@lockfile
end
end

View File

@ -52,9 +52,7 @@ class FormulaVersions
rev_list(branch) do |rev|
formula_at_revision(rev) do |f|
bottle = f.bottle_specification
unless bottle.checksums.empty?
map[f.pkg_version] << bottle.rebuild
end
map[f.pkg_version] << bottle.rebuild unless bottle.checksums.empty?
end
end
map

View File

@ -301,9 +301,7 @@ class Formulary
return TapLoader.new(ref)
end
if File.extname(ref) == ".rb"
return FromPathLoader.new(ref)
end
return FromPathLoader.new(ref) if File.extname(ref) == ".rb"
formula_with_that_name = core_path(ref)
if formula_with_that_name.file?
@ -311,9 +309,7 @@ class Formulary
end
possible_alias = CoreTap.instance.alias_dir/ref
if possible_alias.file?
return AliasLoader.new(possible_alias)
end
return AliasLoader.new(possible_alias) if possible_alias.file?
possible_tap_formulae = tap_paths(ref)
if possible_tap_formulae.size > 1

View File

@ -62,12 +62,17 @@ class Keg
end
# locale-specific directories have the form language[_territory][.codeset][@modifier]
LOCALEDIR_RX = /(locale|man)\/([a-z]{2}|C|POSIX)(_[A-Z]{2})?(\.[a-zA-Z\-0-9]+(@.+)?)?/
LOCALEDIR_RX = %r{(locale|man)/([a-z]{2}|C|POSIX)(_[A-Z]{2})?(\.[a-zA-Z\-0-9]+(@.+)?)?}
INFOFILE_RX = %r{info/([^.].*?\.info|dir)$}
TOP_LEVEL_DIRECTORIES = %w[bin etc include lib sbin share var Frameworks].freeze
ALL_TOP_LEVEL_DIRECTORIES = (TOP_LEVEL_DIRECTORIES + %w[lib/pkgconfig share/locale share/man opt]).freeze
PRUNEABLE_DIRECTORIES = %w[bin etc include lib sbin share Frameworks LinkedKegs var/homebrew/linked].map do |d|
case d when "LinkedKegs" then HOMEBREW_LIBRARY/d else HOMEBREW_PREFIX/d end
PRUNEABLE_DIRECTORIES = %w[bin etc include lib sbin share Frameworks LinkedKegs var/homebrew/linked].map do |dir|
case dir
when "LinkedKegs"
HOMEBREW_LIBRARY/dir
else
HOMEBREW_PREFIX/dir
end
end
# These paths relative to the keg's share directory should always be real
@ -249,10 +254,10 @@ class Keg
def completion_installed?(shell)
dir = case shell
when :bash then path.join("etc", "bash_completion.d")
when :zsh then path.join("share", "zsh", "site-functions")
when :fish then path.join("share", "fish", "vendor_completions.d")
end
when :bash then path.join("etc", "bash_completion.d")
when :zsh then path.join("share", "zsh", "site-functions")
when :fish then path.join("share", "fish", "vendor_completions.d")
end
dir && dir.directory? && !dir.children.empty?
end
@ -318,13 +323,13 @@ class Keg
when "locale/locale.alias" then :skip_file
when INFOFILE_RX then :info
when LOCALEDIR_RX then :mkpath
when /^icons\/.*\/icon-theme\.cache$/ then :skip_file
when %r{^icons/.*/icon-theme\.cache$} then :skip_file
# all icons subfolders should also mkpath
when /^icons\// then :mkpath
when %r{^icons/} then :mkpath
when /^zsh/ then :mkpath
when /^fish/ then :mkpath
# Lua, Lua51, Lua53 all need the same handling.
when /^lua\// then :mkpath
when %r{^lua/} then :mkpath
when %r{^guile/} then :mkpath
when *SHARE_PATHS then :mkpath
else :link
@ -362,7 +367,7 @@ class Keg
# the :link strategy. However, for Foo.framework and
# Foo.framework/Versions we have to use :mkpath so that multiple formulae
# can link their versions into it and `brew [un]link` works.
if relative_path.to_s =~ /[^\/]*\.framework(\/Versions)?$/
if relative_path.to_s =~ %r{[^/]*\.framework(/Versions)?$}
:mkpath
else
:link

View File

@ -79,19 +79,16 @@ module Language
# if we have build flags, we have to pass them to cabal install to resolve the necessary
# dependencies, and call cabal configure afterwards to set the flags again for compile
flags = ""
if options[:flags]
flags = "--flags=#{options[:flags].join(" ")}"
end
flags = "--flags=#{options[:flags].join(" ")}" if options[:flags]
args_and_flags = args
args_and_flags << flags unless flags.empty?
args_and_flags << flags unless flags.nil?
# install dependencies in the sandbox
cabal_install "--only-dependencies", *args_and_flags
# call configure if build flags are set
cabal_configure flags unless flags.empty?
cabal_configure flags unless flags.nil?
# install the main package in the destination dir
cabal_install "--prefix=#{prefix}", *args

View File

@ -337,9 +337,7 @@ class Migrator
end
def backup_oldname_cellar
unless old_cellar.exist?
FileUtils.mv(new_cellar, old_cellar)
end
FileUtils.mv(new_cellar, old_cellar) unless old_cellar.exist?
end
def backup_old_tabs

View File

@ -14,7 +14,7 @@ class Option
end
def <=>(other)
return unless Option === other
return unless other.is_a?(Option)
name <=> other.name
end

View File

@ -175,7 +175,7 @@ module OS
# Returns true even if outdated tools are installed, e.g.
# tools from Xcode 4.x on 10.9
def installed?
!!detect_version
!detect_version.nil?
end
def update_instructions

View File

@ -89,7 +89,7 @@ class DATAPatch < EmbeddedPatch
path.open("rb") do |f|
begin
line = f.gets
end until line.nil? || /^__END__$/ === line
end until line.nil? || line =~ /^__END__$/
data << line while line = f.gets
end
data

View File

@ -32,7 +32,7 @@ class PkgVersion
alias_method :to_str, :to_s
def <=>(other)
return unless PkgVersion === other
return unless other.is_a?(PkgVersion)
(version <=> other.version).nonzero? || revision <=> other.revision
end
alias_method :eql?, :==

View File

@ -56,7 +56,7 @@ class Requirement
def satisfied?
result = self.class.satisfy.yielder { |p| instance_eval(&p) }
@satisfied_result = result
!!result
result ? true : false
end
# Overriding #fatal? is deprecated.
@ -83,7 +83,7 @@ class Requirement
# PATH.
# This is undocumented magic and it should be removed, but we need to add
# a way to declare path-based requirements that work with superenv first.
if Pathname === @satisfied_result
if @satisfied_result.is_a?(Pathname)
parent = @satisfied_result.parent
unless ENV["PATH"].split(File::PATH_SEPARATOR).include?(parent.to_s)
ENV.append_path("PATH", parent)
@ -115,7 +115,7 @@ class Requirement
def to_dependency
f = self.class.default_formula
raise "No default formula defined for #{inspect}" if f.nil?
if HOMEBREW_TAP_FORMULA_REGEX === f
if f =~ HOMEBREW_TAP_FORMULA_REGEX
TapDependency.new(f, tags, method(:modify_build_environment), name)
else
Dependency.new(f, tags, method(:modify_build_environment), name)

View File

@ -22,7 +22,7 @@ class XcodeRequirement < Requirement
satisfy(build_env: false) { xcode_installed_version }
def initialize(tags)
@version = tags.find { |t| tags.delete(t) if /(\d\.)+\d/ === t }
@version = tags.find { |tag| tags.delete(tag) if tag =~ /(\d\.)+\d/ }
super
end
@ -39,11 +39,11 @@ class XcodeRequirement < Requirement
Installing just the Command Line Tools is not sufficient.
EOS
if MacOS.version >= :lion
message += <<-EOS.undent
message + <<-EOS.undent
Xcode can be installed from the App Store.
EOS
else
message += <<-EOS.undent
message + <<-EOS.undent
Xcode can be installed from https://developer.apple.com/xcode/downloads/
EOS
end

View File

@ -65,11 +65,12 @@ class SoftwareSpec
end
def bottle_unneeded?
!!@bottle_disable_reason && @bottle_disable_reason.unneeded?
return false unless @bottle_disable_reason
@bottle_disable_reason.unneeded?
end
def bottle_disabled?
!!@bottle_disable_reason
@bottle_disable_reason ? true : false
end
attr_reader :bottle_disable_reason
@ -116,12 +117,12 @@ class SoftwareSpec
def option(name, description = "")
opt = PREDEFINED_OPTIONS.fetch(name) do
if Symbol === name
if name.is_a?(Symbol)
opoo "Passing arbitrary symbols to `option` is deprecated: #{name.inspect}"
puts "Symbols are reserved for future use, please pass a string instead"
name = name.to_s
end
unless String === name
unless name.is_a?(String)
raise ArgumentError, "option name must be string or symbol; got a #{name.class}: #{name}"
end
raise ArgumentError, "option name is required" if name.empty?
@ -318,7 +319,7 @@ class BottleSpecification
end
def tag?(tag)
!!checksum_for(tag)
checksum_for(tag) ? true : false
end
# Checksum methods in the DSL's bottle block optionally take

View File

@ -328,9 +328,9 @@ class Tab < OpenStruct
else
s << "Built from source"
end
if time
s << Time.at(time).strftime("on %Y-%m-%d at %H:%M:%S")
end
s << Time.at(time).strftime("on %Y-%m-%d at %H:%M:%S") if time
unless used_options.empty?
s << "with:"
s << used_options.to_a.join(" ")

View File

@ -154,7 +154,7 @@ class DiagnosticChecksTest < Homebrew::TestCase
def test_check_dyld_vars
ENV["DYLD_INSERT_LIBRARIES"] = "foo"
assert_match "Setting DYLD_INSERT_LIBRARIES",
@checks.check_DYLD_vars
@checks.check_dyld_vars
end
def test_check_for_symlinked_cellar

View File

@ -118,7 +118,7 @@ class GitDownloadStrategyTests < Homebrew::TestCase
def test_source_modified_time
setup_git_repo
assert_equal 1242860651, @strategy.source_modified_time.to_i
assert_equal 1_242_860_651, @strategy.source_modified_time.to_i
end
def test_last_commit

View File

@ -26,7 +26,7 @@ class PathnameTests < Homebrew::TestCase
mkdir_p @dir/"a-directory"
touch @dir/".DS_Store"
touch @dir/"a-file"
File.truncate(@dir/"a-file", 1048576)
File.truncate(@dir/"a-file", 1_048_576)
ln_s @dir/"a-file", @dir/"a-symlink"
ln @dir/"a-file", @dir/"a-hardlink"
assert_equal 3, @dir.file_count

View File

@ -22,9 +22,7 @@ module Utils
return if git_available?
# we cannot install brewed git if homebrew/core is unavailable.
unless CoreTap.instance.installed?
raise "Git is unavailable"
end
raise "Git is unavailable" unless CoreTap.instance.installed?
begin
oh1 "Installing git"

View File

@ -208,7 +208,7 @@ class Version
end
def <=>(other)
return unless Version === other
return unless other.is_a?(Version)
return 0 if version == other.version
return 1 if head? && !other.head?
return -1 if !head? && other.head?
@ -386,7 +386,7 @@ class Version
# e.g. http://mirrors.jenkins-ci.org/war/1.486/jenkins.war
# e.g. https://github.com/foo/bar/releases/download/0.10.11/bar.phar
m = /\/(\d\.\d+(\.\d+)?)\//.match(spec_s)
m = %r{/(\d\.\d+(\.\d+)?)}.match(spec_s)
return m.captures.first unless m.nil?
# e.g. http://www.ijg.org/files/jpegsrc.v8d.tar.gz