style: check Bash style with shellcheck
This commit is contained in:
parent
728189d3e9
commit
96504ec9dc
@ -76,13 +76,15 @@ module Homebrew
|
||||
|
||||
cache_env = { "XDG_CACHE_HOME" => "#{HOMEBREW_CACHE}/style" }
|
||||
|
||||
rubocop_success = false
|
||||
|
||||
case output_type
|
||||
when :print
|
||||
args << "--debug" if ARGV.debug?
|
||||
args << "--display-cop-names" if ARGV.include? "--display-cop-names"
|
||||
args << "--format" << "simple" if files
|
||||
system(cache_env, "rubocop", "_#{HOMEBREW_RUBOCOP_VERSION}_", *args)
|
||||
!$CHILD_STATUS.success?
|
||||
rubocop_success = $CHILD_STATUS.success?
|
||||
when :json
|
||||
json, err, status =
|
||||
Open3.capture3(cache_env, "rubocop", "_#{HOMEBREW_RUBOCOP_VERSION}_",
|
||||
@ -96,10 +98,35 @@ module Homebrew
|
||||
raise "Error running `rubocop --format json #{args.join " "}`\n#{err}"
|
||||
end
|
||||
|
||||
RubocopResults.new(JSON.parse(json))
|
||||
return RubocopResults.new(JSON.parse(json))
|
||||
else
|
||||
raise "Invalid output_type for check_style_impl: #{output_type}"
|
||||
end
|
||||
|
||||
return !rubocop_success if !files.nil? && !has_non_formula
|
||||
|
||||
shellcheck = which("shellcheck")
|
||||
shellcheck ||= which("shellcheck", ENV["HOMEBREW_PATH"])
|
||||
shellcheck ||= begin
|
||||
ohai "Installing `shellcheck` for shell style checks..."
|
||||
system HOMEBREW_BREW_FILE, "install", "shellcheck"
|
||||
which("shellcheck") || which("shellcheck", ENV["HOMEBREW_PATH"])
|
||||
end
|
||||
unless shellcheck
|
||||
opoo "Could not find or install `shellcheck`! Not checking shell style."
|
||||
return !rubocop_success
|
||||
end
|
||||
|
||||
shell_files = [
|
||||
HOMEBREW_BREW_FILE,
|
||||
*Pathname.glob("#{HOMEBREW_LIBRARY}/Homebrew/*.sh"),
|
||||
*Pathname.glob("#{HOMEBREW_LIBRARY}/Homebrew/cmd/*.sh"),
|
||||
*Pathname.glob("#{HOMEBREW_LIBRARY}/Homebrew/utils/*.sh"),
|
||||
].select(&:exist?)
|
||||
# TODO: check, fix completions here too.
|
||||
# TODO: consider using ShellCheck JSON output
|
||||
shellcheck_success = system shellcheck, "--shell=bash", *shell_files
|
||||
!rubocop_success || !shellcheck_success
|
||||
end
|
||||
|
||||
class RubocopResults
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user