diff --git a/Library/Homebrew/cask/dsl.rb b/Library/Homebrew/cask/dsl.rb index d6c5d4ab12..b01b707083 100644 --- a/Library/Homebrew/cask/dsl.rb +++ b/Library/Homebrew/cask/dsl.rb @@ -310,19 +310,36 @@ module Cask # For architecture-dependent downloads: # # ```ruby - # sha256 arm: "7bdb497080ffafdfd8cc94d8c62b004af1be9599e865e5555e456e2681e150ca", - # intel: "b3c1c2442480a0219b9e05cf91d03385858c20f04b764ec08a3fa83d1b27e7b2" - # linux: "1a2aee7f1ddc999993d4d7d42a150c5e602bc17281678050b8ed79a0500cc90f" + # sha256 arm: "7bdb497080ffafdfd8cc94d8c62b004af1be9599e865e5555e456e2681e150ca", + # x86_64: "b3c1c2442480a0219b9e05cf91d03385858c20f04b764ec08a3fa83d1b27e7b2" + # x86_64_linux: "1a2aee7f1ddc999993d4d7d42a150c5e602bc17281678050b8ed79a0500cc90f" + # arm64_linux: "bd766af7e692afceb727a6f88e24e6e68d9882aeb3e8348412f6c03d96537c75" # ``` # # @api public - def sha256(arg = nil, arm: nil, intel: nil, linux: nil) - should_return = arg.nil? && arm.nil? && intel.nil? && linux.nil? + sig { + params( + arg: T.nilable(T.any(String, Symbol)), + arm: T.nilable(String), + intel: T.nilable(String), + x86_64: T.nilable(String), + x86_64_linux: T.nilable(String), + arm64_linux: T.nilable(String), + ).returns(T.nilable(T.any(Symbol, Checksum))) + } + def sha256(arg = nil, arm: nil, intel: nil, x86_64: nil, x86_64_linux: nil, arm64_linux: nil) + should_return = arg.nil? && arm.nil? && (intel.nil? || x86_64.nil?) && x86_64_linux.nil? && arm64_linux.nil? + x86_64 ||= intel if intel.present? && x86_64.nil? set_unique_stanza(:sha256, should_return) do - @on_system_blocks_exist = true if arm.present? || intel.present? || linux.present? + if arm.present? || x86_64.present? || x86_64_linux.present? || arm64_linux.present? + @on_system_blocks_exist = true + end - val = arg || on_system_conditional(macos: on_arch_conditional(arm:, intel:), linux:) + val = arg || on_system_conditional( + macos: on_arch_conditional(arm:, intel: x86_64), + linux: on_arch_conditional(arm: arm64_linux, intel: x86_64_linux), + ) case val when :no_check val @@ -362,6 +379,12 @@ module Cask # ``` # # @api public + sig { + params( + macos: T.nilable(String), + linux: T.nilable(String), + ).returns(T.nilable(String)) + } def os(macos: nil, linux: nil) should_return = macos.nil? && linux.nil?