feat: add appimage support for linux
This commit is contained in:
parent
ff4ee5d0b5
commit
caba75ac25
@ -2,6 +2,7 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "cask/artifact/app"
|
require "cask/artifact/app"
|
||||||
|
require "cask/artifact/appimage"
|
||||||
require "cask/artifact/artifact" # generic 'artifact' stanza
|
require "cask/artifact/artifact" # generic 'artifact' stanza
|
||||||
require "cask/artifact/audio_unit_plugin"
|
require "cask/artifact/audio_unit_plugin"
|
||||||
require "cask/artifact/binary"
|
require "cask/artifact/binary"
|
||||||
|
15
Library/Homebrew/cask/artifact/appimage.rb
Normal file
15
Library/Homebrew/cask/artifact/appimage.rb
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# typed: strict
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "cask/artifact/symlinked"
|
||||||
|
|
||||||
|
module Cask
|
||||||
|
module Artifact
|
||||||
|
class AppImage < Symlinked
|
||||||
|
sig { params(target: T.any(String, Pathname)).returns(Pathname) }
|
||||||
|
def resolve_target(target)
|
||||||
|
config.appimagedir/target
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -15,6 +15,7 @@ module Cask
|
|||||||
DEFAULT_DIRS = T.let(
|
DEFAULT_DIRS = T.let(
|
||||||
{
|
{
|
||||||
appdir: "/Applications",
|
appdir: "/Applications",
|
||||||
|
appimagedir: "~/Applications",
|
||||||
keyboard_layoutdir: "/Library/Keyboard Layouts",
|
keyboard_layoutdir: "/Library/Keyboard Layouts",
|
||||||
colorpickerdir: "~/Library/ColorPickers",
|
colorpickerdir: "~/Library/ColorPickers",
|
||||||
prefpanedir: "~/Library/PreferencePanes",
|
prefpanedir: "~/Library/PreferencePanes",
|
||||||
@ -47,6 +48,7 @@ module Cask
|
|||||||
args = T.unsafe(args)
|
args = T.unsafe(args)
|
||||||
new(explicit: {
|
new(explicit: {
|
||||||
appdir: args.appdir,
|
appdir: args.appdir,
|
||||||
|
appimagedir: args.appimagedir,
|
||||||
keyboard_layoutdir: args.keyboard_layoutdir,
|
keyboard_layoutdir: args.keyboard_layoutdir,
|
||||||
colorpickerdir: args.colorpickerdir,
|
colorpickerdir: args.colorpickerdir,
|
||||||
prefpanedir: args.prefpanedir,
|
prefpanedir: args.prefpanedir,
|
||||||
|
@ -34,6 +34,7 @@ module Cask
|
|||||||
ORDINARY_ARTIFACT_CLASSES = [
|
ORDINARY_ARTIFACT_CLASSES = [
|
||||||
Artifact::Installer,
|
Artifact::Installer,
|
||||||
Artifact::App,
|
Artifact::App,
|
||||||
|
Artifact::AppImage,
|
||||||
Artifact::Artifact,
|
Artifact::Artifact,
|
||||||
Artifact::AudioUnitPlugin,
|
Artifact::AudioUnitPlugin,
|
||||||
Artifact::Binary,
|
Artifact::Binary,
|
||||||
|
@ -63,6 +63,10 @@ module Homebrew
|
|||||||
description: "Target location for Applications " \
|
description: "Target location for Applications " \
|
||||||
"(default: `#{Cask::Config::DEFAULT_DIRS[:appdir]}`).",
|
"(default: `#{Cask::Config::DEFAULT_DIRS[:appdir]}`).",
|
||||||
}],
|
}],
|
||||||
|
[:flag, "--appimagedir=", {
|
||||||
|
description: "Target location for AppImages " \
|
||||||
|
"(default: `#{Cask::Config::DEFAULT_DIRS[:appimagedir]}`).",
|
||||||
|
}],
|
||||||
[:flag, "--keyboard-layoutdir=", {
|
[:flag, "--keyboard-layoutdir=", {
|
||||||
description: "Target location for Keyboard Layouts " \
|
description: "Target location for Keyboard Layouts " \
|
||||||
"(default: `#{Cask::Config::DEFAULT_DIRS[:keyboard_layoutdir]}`).",
|
"(default: `#{Cask::Config::DEFAULT_DIRS[:keyboard_layoutdir]}`).",
|
||||||
|
@ -2,3 +2,4 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "extend/os/linux/cask/installer" if OS.linux?
|
require "extend/os/linux/cask/installer" if OS.linux?
|
||||||
|
require "extend/os/mac/cask/installer" if OS.mac?
|
||||||
|
29
Library/Homebrew/extend/os/mac/cask/installer.rb
Normal file
29
Library/Homebrew/extend/os/mac/cask/installer.rb
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# typed: strict
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module OS
|
||||||
|
module Mac
|
||||||
|
module Cask
|
||||||
|
module Installer
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { ::Cask::Installer }
|
||||||
|
|
||||||
|
MAC_INVALID_ARTIFACTS = [
|
||||||
|
::Cask::Artifact::AppImage,
|
||||||
|
].freeze
|
||||||
|
|
||||||
|
sig { void }
|
||||||
|
def check_stanza_os_requirements
|
||||||
|
return unless artifacts.any? do |artifact|
|
||||||
|
MAC_INVALID_ARTIFACTS.include?(artifact.class)
|
||||||
|
end
|
||||||
|
|
||||||
|
raise ::Cask::CaskError, "Linux is required for this software."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Cask::Installer.prepend(OS::Mac::Cask::Installer)
|
Loading…
x
Reference in New Issue
Block a user