diff --git a/Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb b/Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb index b16ff6339b652..b248a88ed75bb 100644 --- a/Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb +++ b/Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb @@ -48,15 +48,6 @@ class GenerateCaskCiMatrix < AbstractCommand hide_from_man_page! end - sig { params(args: T::Array[String]).void } - def initialize(*args) - super - repository = ENV.fetch("GITHUB_REPOSITORY", "homebrew/homebrew-cask") - raise UsageError, "The GITHUB_REPOSITORY environment variable must be set." if repository.blank? - - @tap = T.let(Tap.fetch(repository), Tap) - end - sig { override.void } def run skip_install = args.skip_install? @@ -64,14 +55,17 @@ def run casks = args.named if args.casks? pr_url = args.named if args.url? syntax_only = args.syntax_only? - tap = @tap + + repository = ENV.fetch("GITHUB_REPOSITORY", nil) + raise UsageError, "The GITHUB_REPOSITORY environment variable must be set." if repository.blank? + + tap = T.let(Tap.fetch(repository), Tap) raise UsageError, "Either `--cask` or `--url` must be specified." if casks.blank? && pr_url.blank? raise UsageError, "Only one url can be specified" if pr_url&.count&.> 1 - raise UsageError, "This command must be run from inside a tap directory." if Dir.pwd.to_s != tap.path.to_s labels = if pr_url - pr = GitHub::API.open_rest(pr_url) + pr = GitHub::API.open_rest(pr_url.first) pr.fetch("labels").map { |l| l.fetch("name") } else [] @@ -225,7 +219,7 @@ def runners(cask_content:) def generate_matrix(tap, labels: [], cask_names: [], skip_install: false, new_cask: false) odie "This command must be run from inside a tap directory." unless tap - changed_files = find_changed_files + changed_files = find_changed_files(tap) ruby_files_in_wrong_directory = T.must(changed_files[:modified_ruby_files]) - ( @@ -310,10 +304,8 @@ def generate_matrix(tap, labels: [], cask_names: [], skip_install: false, new_ca end end - sig { returns(T::Hash[Symbol, T::Array[String]]) } - def find_changed_files - tap = @tap - + sig { params(tap: Tap).returns(T::Hash[Symbol, T::Array[String]]) } + def find_changed_files(tap) commit_range_start = Utils.safe_popen_read("git", "rev-parse", "origin").chomp commit_range_end = Utils.safe_popen_read("git", "rev-parse", "HEAD").chomp commit_range = "#{commit_range_start}...#{commit_range_end}" diff --git a/Library/Homebrew/test/dev-cmd/generate-cask-ci-matrix_spec.rb b/Library/Homebrew/test/dev-cmd/generate-cask-ci-matrix_spec.rb index 802d47bf68e73..0299fbfecef36 100644 --- a/Library/Homebrew/test/dev-cmd/generate-cask-ci-matrix_spec.rb +++ b/Library/Homebrew/test/dev-cmd/generate-cask-ci-matrix_spec.rb @@ -4,15 +4,5 @@ require "dev-cmd/generate-cask-ci-matrix" RSpec.describe Homebrew::DevCmd::GenerateCaskCiMatrix do - ENV["GITHUB_REPOSITORY"] = "homebrew/homebrew-cask" - it_behaves_like "parseable arguments" - - it "fails when not from inside a tap directory", :integration_test do - expect do - brew "generate-cask-ci-matrix", "--cask", "google-chrome", - "GITHUB_REPOSITORY" => ENV.fetch("GITHUB_REPOSITORY") - end - .to output(/Error: Invalid usage: This command must be run from inside a tap directory./).to_stderr - end end