Merge pull request #13657 from Rylan12/add-arch-and-variable-cask-dsl
Add `arch` cask DSL
This commit is contained in:
commit
044fefdce9
@ -243,6 +243,17 @@ module Cask
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# @api public
|
||||||
|
def arch(arm: nil, intel: nil)
|
||||||
|
should_return = arm.blank? && intel.blank?
|
||||||
|
|
||||||
|
set_unique_stanza(:arch, should_return) do
|
||||||
|
@on_system_blocks_exist = true
|
||||||
|
|
||||||
|
on_arch_conditional(arm: arm, intel: intel)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# `depends_on` uses a load method so that multiple stanzas can be merged.
|
# `depends_on` uses a load method so that multiple stanzas can be merged.
|
||||||
# @api public
|
# @api public
|
||||||
def depends_on(*args)
|
def depends_on(*args)
|
||||||
|
@ -65,6 +65,13 @@ module OnSystem
|
|||||||
result
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
base.define_method(:on_arch_conditional) do |arm:, intel:|
|
||||||
|
@on_system_blocks_exist = true
|
||||||
|
|
||||||
|
return arm if OnSystem.arch_condition_met? :arm
|
||||||
|
return intel if OnSystem.arch_condition_met? :intel
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(base: Class).void }
|
sig { params(base: Class).void }
|
||||||
|
@ -143,7 +143,8 @@ class Livecheck
|
|||||||
end
|
end
|
||||||
|
|
||||||
delegate version: :@package_or_resource
|
delegate version: :@package_or_resource
|
||||||
private :version
|
delegate arch: :@package_or_resource
|
||||||
|
private :version, :arch
|
||||||
|
|
||||||
# Returns a `Hash` of all instance variable values.
|
# Returns a `Hash` of all instance variable values.
|
||||||
# @return [Hash]
|
# @return [Hash]
|
||||||
|
@ -6,7 +6,7 @@ module RuboCop
|
|||||||
# Constants available globally for use in all cask cops.
|
# Constants available globally for use in all cask cops.
|
||||||
module Constants
|
module Constants
|
||||||
STANZA_GROUPS = [
|
STANZA_GROUPS = [
|
||||||
[:version, :sha256],
|
[:version, :sha256, :arch],
|
||||||
[:language],
|
[:language],
|
||||||
[:url, :appcast, :name, :desc, :homepage],
|
[:url, :appcast, :name, :desc, :homepage],
|
||||||
[:livecheck],
|
[:livecheck],
|
||||||
|
@ -218,25 +218,25 @@ describe Cask::Cask, :cask do
|
|||||||
<<~JSON
|
<<~JSON
|
||||||
{
|
{
|
||||||
"arm64_big_sur": {
|
"arm64_big_sur": {
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/arm.zip",
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin-arm64/1.2.0/arm.zip",
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
|
"sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
|
||||||
},
|
},
|
||||||
"monterey": {
|
"monterey": {
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.3/intel.zip"
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
|
||||||
},
|
},
|
||||||
"big_sur": {
|
"big_sur": {
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/intel.zip",
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.0/intel.zip",
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
|
"sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
|
||||||
},
|
},
|
||||||
"catalina": {
|
"catalina": {
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
"sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
||||||
},
|
},
|
||||||
"mojave": {
|
"mojave": {
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
"sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,7 @@ describe Cask::Cmd::List, :cask do
|
|||||||
],
|
],
|
||||||
"desc": null,
|
"desc": null,
|
||||||
"homepage": "https://brew.sh/",
|
"homepage": "https://brew.sh/",
|
||||||
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.3/arm.zip",
|
"url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin-arm64/1.2.3/arm.zip",
|
||||||
"appcast": null,
|
"appcast": null,
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"versions": {
|
"versions": {
|
||||||
|
@ -305,6 +305,38 @@ describe Cask::DSL, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "arch stanza" do
|
||||||
|
let(:token) { "invalid/invalid-two-arch" }
|
||||||
|
|
||||||
|
it "prevents defining multiple arches" do
|
||||||
|
expect { cask }.to raise_error(Cask::CaskInvalidError, /'arch' stanza may only appear once/)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when no intel value is specified" do
|
||||||
|
let(:token) { "arch-arm-only" }
|
||||||
|
|
||||||
|
context "when running on arm" do
|
||||||
|
before do
|
||||||
|
allow(Hardware::CPU).to receive(:type).and_return(:arm)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns the value" do
|
||||||
|
expect(cask.url.to_s).to eq "file://#{TEST_FIXTURE_DIR}/cask/caffeine-arm.zip"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when running on intel" do
|
||||||
|
before do
|
||||||
|
allow(Hardware::CPU).to receive(:type).and_return(:intel)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "defaults to `nil` for the other when no arrays are passed" do
|
||||||
|
expect(cask.url.to_s).to eq "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "appcast stanza" do
|
describe "appcast stanza" do
|
||||||
let(:token) { "with-appcast" }
|
let(:token) { "with-appcast" }
|
||||||
|
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
cask "arch-arm-only" do
|
||||||
|
version "1.2.3"
|
||||||
|
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||||
|
arch arm: "-arm"
|
||||||
|
|
||||||
|
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine#{arch}.zip"
|
||||||
|
homepage "https://brew.sh/"
|
||||||
|
|
||||||
|
app "Caffeine.app"
|
||||||
|
end
|
@ -0,0 +1,11 @@
|
|||||||
|
cask "invalid-two-arch" do
|
||||||
|
version "1.2.3"
|
||||||
|
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||||
|
arch arm: "arm", intel: "intel"
|
||||||
|
arch arm: "amd64", intel: "x86_64"
|
||||||
|
|
||||||
|
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
|
||||||
|
homepage "https://brew.sh/"
|
||||||
|
|
||||||
|
app "Caffeine.app"
|
||||||
|
end
|
@ -1,11 +1,9 @@
|
|||||||
cask "multiple-versions" do
|
cask "multiple-versions" do
|
||||||
arch = "arm"
|
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||||
|
arch arm: "arm", intel: "intel"
|
||||||
|
|
||||||
on_intel do
|
platform = on_arch_conditional arm: "darwin-arm64", intel: "darwin"
|
||||||
arch = "intel"
|
|
||||||
end
|
|
||||||
|
|
||||||
on_big_sur do
|
on_big_sur do
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
@ -17,7 +15,7 @@ cask "multiple-versions" do
|
|||||||
sha256 "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
sha256 "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
|
||||||
end
|
end
|
||||||
|
|
||||||
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine/#{version}/#{arch}.zip"
|
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine/#{platform}/#{version}/#{arch}.zip"
|
||||||
homepage "https://brew.sh/"
|
homepage "https://brew.sh/"
|
||||||
|
|
||||||
app "Caffeine.app"
|
app "Caffeine.app"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user