From 801829eecef0157d30af1db7290e0723b46ee821 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Wed, 4 Dec 2024 22:49:14 +0100 Subject: [PATCH] feat: allow font install on linux --- Library/Homebrew/cask/config.rb | 6 ++++ Library/Homebrew/cask/installer.rb | 17 ++++++++-- Library/Homebrew/cask/quarantine.rb | 2 ++ Library/Homebrew/extend/os/cask/config.rb | 4 +++ Library/Homebrew/extend/os/cask/quarantine.rb | 4 +++ .../Homebrew/extend/os/linux/cask/config.rb | 34 +++++++++++++++++++ .../extend/os/linux/cask/installer.rb | 4 ++- .../extend/os/linux/cask/quarantine.rb | 26 ++++++++++++++ 8 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 Library/Homebrew/extend/os/cask/config.rb create mode 100644 Library/Homebrew/extend/os/cask/quarantine.rb create mode 100644 Library/Homebrew/extend/os/linux/cask/config.rb create mode 100644 Library/Homebrew/extend/os/linux/cask/quarantine.rb diff --git a/Library/Homebrew/cask/config.rb b/Library/Homebrew/cask/config.rb index e34e4417975cd7..5889dcfce9fe21 100644 --- a/Library/Homebrew/cask/config.rb +++ b/Library/Homebrew/cask/config.rb @@ -189,7 +189,11 @@ def languages end end +<<<<<<< HEAD sig { params(languages: T::Array[String]).void } +======= + sig { params(languages: T::Array[String]).returns(T::Array[String]) } +>>>>>>> e5b6848ccc (feat: allow font install on linux) def languages=(languages) explicit[:languages] = languages end @@ -221,3 +225,5 @@ def to_json(*options) end end end + +require "extend/os/cask/config" diff --git a/Library/Homebrew/cask/installer.rb b/Library/Homebrew/cask/installer.rb index a0cdf8b74a6443..b28851bb72d161 100644 --- a/Library/Homebrew/cask/installer.rb +++ b/Library/Homebrew/cask/installer.rb @@ -76,6 +76,7 @@ def fetch(quiet: nil, timeout: nil) satisfy_cask_and_formula_dependencies end + sig { void } def stage odebug "Cask::Installer#stage" @@ -88,6 +89,7 @@ def stage raise e end + sig { void } def install start_time = Time.now odebug "Cask::Installer#install" @@ -134,6 +136,7 @@ def install raise end + sig { void } def check_deprecate_disable deprecate_disable_type = DeprecateDisable.type(@cask) return if deprecate_disable_type.nil? @@ -150,6 +153,7 @@ def check_deprecate_disable end end + sig { void } def check_conflicts return unless @cask.conflicts_with @@ -166,6 +170,7 @@ def check_conflicts end end + sig { void } def uninstall_existing_cask return unless @cask.installed? @@ -194,6 +199,7 @@ def download(quiet: nil, timeout: nil) timeout:) end + sig { void } def verify_has_sha odebug "Checking cask has checksum" return if @cask.sha256 != :no_check @@ -211,6 +217,12 @@ def primary_container end end + sig { returns(ArtifactSet) } + def artifacts + @cask.artifacts + end + + sig { params(to: Pathname).void } def extract_primary_container(to: @cask.staged_path) odebug "Extracting primary container" @@ -240,7 +252,6 @@ def extract_primary_container(to: @cask.staged_path) sig { params(predecessor: T.nilable(Cask)).void } def install_artifacts(predecessor: nil) - artifacts = @cask.artifacts already_installed_artifacts = [] odebug "Installing artifacts" @@ -299,6 +310,7 @@ def check_macos_requirements raise CaskError, @cask.depends_on.macos.message(type: :cask) end + sig { void } def check_arch_requirements return if @cask.depends_on.arch.nil? @@ -314,6 +326,7 @@ def check_arch_requirements "but you are running #{@current_arch}." end + sig { returns(T::Array[T.untyped]) } def cask_and_formula_dependencies return @cask_and_formula_dependencies if @cask_and_formula_dependencies @@ -487,8 +500,6 @@ def finalize_upgrade sig { params(clear: T::Boolean, successor: T.nilable(Cask)).void } def uninstall_artifacts(clear: false, successor: nil) - artifacts = @cask.artifacts - odebug "Uninstalling artifacts" odebug "#{::Utils.pluralize("artifact", artifacts.length, include_count: true)} defined", artifacts diff --git a/Library/Homebrew/cask/quarantine.rb b/Library/Homebrew/cask/quarantine.rb index 4a36a5128edac7..ae680b0d2321a6 100644 --- a/Library/Homebrew/cask/quarantine.rb +++ b/Library/Homebrew/cask/quarantine.rb @@ -266,3 +266,5 @@ def self.app_management_permissions_granted?(app:, command:) end end end + +require "extend/os/cask/quarantine" diff --git a/Library/Homebrew/extend/os/cask/config.rb b/Library/Homebrew/extend/os/cask/config.rb new file mode 100644 index 00000000000000..cc7f21e1bd741d --- /dev/null +++ b/Library/Homebrew/extend/os/cask/config.rb @@ -0,0 +1,4 @@ +# typed: strict +# frozen_string_literal: true + +require "extend/os/linux/cask/config" if OS.linux? diff --git a/Library/Homebrew/extend/os/cask/quarantine.rb b/Library/Homebrew/extend/os/cask/quarantine.rb new file mode 100644 index 00000000000000..31671b65e5d352 --- /dev/null +++ b/Library/Homebrew/extend/os/cask/quarantine.rb @@ -0,0 +1,4 @@ +# typed: strict +# frozen_string_literal: true + +require "extend/os/linux/cask/quarantine" if OS.linux? diff --git a/Library/Homebrew/extend/os/linux/cask/config.rb b/Library/Homebrew/extend/os/linux/cask/config.rb new file mode 100644 index 00000000000000..641d1b6f2f7acb --- /dev/null +++ b/Library/Homebrew/extend/os/linux/cask/config.rb @@ -0,0 +1,34 @@ +# typed: strict +# frozen_string_literal: true + +module OS + module Linux + module Cask + module Config + extend T::Helpers + + requires_ancestor { ::Cask::Config } + + DEFAULT_DIRS = T.let({ + vst_plugindir: "~/.vst", + vst3_plugindir: "~/.vst3", + fontdir: "#{ENV.fetch("XDG_DATA_HOME", "~/.local/share")}/fonts", + appdir: nil, + keyboard_layoutdir: nil, + colorpickerdir: nil, + prefpanedir: nil, + qlplugindir: nil, + mdimporterdir: nil, + servicedir: nil, + dictionarydir: nil, + screen_saverdir: nil, + input_methoddir: nil, + internet_plugindir: nil, + audio_unit_plugindir: nil, + }.freeze, T::Hash[Symbol, T.nilable(String)]) + end + end + end +end + +Cask::Config.prepend(OS::Linux::Cask::Config) diff --git a/Library/Homebrew/extend/os/linux/cask/installer.rb b/Library/Homebrew/extend/os/linux/cask/installer.rb index 536a08b1f5590e..635f40bf39070d 100644 --- a/Library/Homebrew/extend/os/linux/cask/installer.rb +++ b/Library/Homebrew/extend/os/linux/cask/installer.rb @@ -13,7 +13,9 @@ module Installer sig { void } def check_stanza_os_requirements - raise ::Cask::CaskError, "macOS is required for this software." + raise ::Cask::CaskError, "macOS is required for this software." unless artifacts.reject do |k| + k.is_a?(::Cask::Artifact::Font) + end.empty? end end end diff --git a/Library/Homebrew/extend/os/linux/cask/quarantine.rb b/Library/Homebrew/extend/os/linux/cask/quarantine.rb new file mode 100644 index 00000000000000..0fbed2ac4d2244 --- /dev/null +++ b/Library/Homebrew/extend/os/linux/cask/quarantine.rb @@ -0,0 +1,26 @@ +# typed: strict +# frozen_string_literal: true + +module OS + module Linux + module Cask + module Quarantine + extend T::Helpers + + requires_ancestor { ::Cask::Quarantine } + + sig { returns(Symbol) } + def self.check_quarantine_support + :linux + end + + sig { returns(T::Boolean) } + def self.available? + false + end + end + end + end +end + +Cask::Quarantine.prepend(OS::Linux::Cask::Quarantine)