style: run actionlint.
It feels nice to also be running this as part of `brew style` checks and, indirectly, `brew test-bot` tap syntax checks. Co-authored-by: Carlo Cabrera <30379873+carlocab@users.noreply.github.com>
This commit is contained in:
parent
ff83a4fd7f
commit
7d0ac4dd4b
@ -44,11 +44,24 @@ module Homebrew
|
|||||||
debug: false, verbose: false)
|
debug: false, verbose: false)
|
||||||
raise ArgumentError, "Invalid output type: #{output_type.inspect}" if [:print, :json].exclude?(output_type)
|
raise ArgumentError, "Invalid output type: #{output_type.inspect}" if [:print, :json].exclude?(output_type)
|
||||||
|
|
||||||
shell_files, ruby_files =
|
ruby_files = []
|
||||||
|
shell_files = []
|
||||||
|
actionlint_files = []
|
||||||
Array(files).map(&method(:Pathname))
|
Array(files).map(&method(:Pathname))
|
||||||
.partition { |f| f.realpath == HOMEBREW_BREW_FILE.realpath || f.extname == ".sh" }
|
.each do |path|
|
||||||
|
case path.extname
|
||||||
|
when ".rb"
|
||||||
|
ruby_files << path
|
||||||
|
when ".sh"
|
||||||
|
shell_files << path
|
||||||
|
when ".yml"
|
||||||
|
actionlint_files << path if path.realpath.to_s.include?("/.github/workflows/")
|
||||||
|
else
|
||||||
|
shell_files << path if path.realpath == HOMEBREW_BREW_FILE.realpath
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
rubocop_result = if shell_files.any? && ruby_files.none?
|
rubocop_result = if files.present? && ruby_files.empty?
|
||||||
(output_type == :json) ? [] : true
|
(output_type == :json) ? [] : true
|
||||||
else
|
else
|
||||||
run_rubocop(ruby_files, output_type,
|
run_rubocop(ruby_files, output_type,
|
||||||
@ -59,22 +72,28 @@ module Homebrew
|
|||||||
debug:, verbose:)
|
debug:, verbose:)
|
||||||
end
|
end
|
||||||
|
|
||||||
shellcheck_result = if ruby_files.any? && shell_files.none?
|
shellcheck_result = if files.present? && shell_files.empty?
|
||||||
(output_type == :json) ? [] : true
|
(output_type == :json) ? [] : true
|
||||||
else
|
else
|
||||||
run_shellcheck(shell_files, output_type, fix:)
|
run_shellcheck(shell_files, output_type, fix:)
|
||||||
end
|
end
|
||||||
|
|
||||||
shfmt_result = if ruby_files.any? && shell_files.none?
|
shfmt_result = if files.present? && shell_files.empty?
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
run_shfmt(shell_files, fix:)
|
run_shfmt(shell_files, fix:)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
actionlint_result = if files.present? && actionlint_files.empty?
|
||||||
|
true
|
||||||
|
else
|
||||||
|
run_actionlint(actionlint_files)
|
||||||
|
end
|
||||||
|
|
||||||
if output_type == :json
|
if output_type == :json
|
||||||
Offenses.new(rubocop_result + shellcheck_result)
|
Offenses.new(rubocop_result + shellcheck_result)
|
||||||
else
|
else
|
||||||
rubocop_result && shellcheck_result && shfmt_result
|
rubocop_result && shellcheck_result && shfmt_result && actionlint_result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -242,6 +261,14 @@ module Homebrew
|
|||||||
$CHILD_STATUS.success?
|
$CHILD_STATUS.success?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.run_actionlint(files)
|
||||||
|
files = github_workflow_files if files.blank?
|
||||||
|
system actionlint, "-shellcheck", shellcheck,
|
||||||
|
"-config-file", HOMEBREW_REPOSITORY/".github/actionlint.yaml",
|
||||||
|
*files
|
||||||
|
$CHILD_STATUS.success?
|
||||||
|
end
|
||||||
|
|
||||||
def self.json_result!(result)
|
def self.json_result!(result)
|
||||||
# An exit status of 1 just means violations were found; other numbers mean
|
# An exit status of 1 just means violations were found; other numbers mean
|
||||||
# execution errors.
|
# execution errors.
|
||||||
@ -270,6 +297,15 @@ module Homebrew
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.github_workflow_files
|
||||||
|
HOMEBREW_REPOSITORY.glob(".github/workflows/*.yml")
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.rubocop
|
||||||
|
ensure_formula_installed!("rubocop", latest: true,
|
||||||
|
reason: "Ruby style checks").opt_bin/"rubocop"
|
||||||
|
end
|
||||||
|
|
||||||
def self.shellcheck
|
def self.shellcheck
|
||||||
ensure_formula_installed!("shellcheck", latest: true,
|
ensure_formula_installed!("shellcheck", latest: true,
|
||||||
reason: "shell style checks").opt_bin/"shellcheck"
|
reason: "shell style checks").opt_bin/"shellcheck"
|
||||||
@ -281,6 +317,11 @@ module Homebrew
|
|||||||
HOMEBREW_LIBRARY/"Homebrew/utils/shfmt.sh"
|
HOMEBREW_LIBRARY/"Homebrew/utils/shfmt.sh"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.actionlint
|
||||||
|
ensure_formula_installed!("actionlint", latest: true,
|
||||||
|
reason: "GitHub Actions checks").opt_bin/"actionlint"
|
||||||
|
end
|
||||||
|
|
||||||
# Collection of style offenses.
|
# Collection of style offenses.
|
||||||
class Offenses
|
class Offenses
|
||||||
include Enumerable
|
include Enumerable
|
||||||
|
Loading…
x
Reference in New Issue
Block a user