Class: Cask::Artifact::Installer Private

Inherits:
AbstractArtifact show all
Defined in:
Library/Homebrew/cask/artifact/installer.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Artifact corresponding to the installer stanza.

Defined Under Namespace

Modules: ManualInstaller, ScriptInstaller

Constant Summary collapse

VALID_KEYS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Set.new([
  :manual,
  :script,
]).freeze

Instance Attribute Summary collapse

Attributes inherited from AbstractArtifact

#cask

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractArtifact

#<=>, #config, dirmethod, dsl_key, english_article, english_name, read_script_arguments, #staged_path_join_executable, #to_s

Methods included from Predicable

#attr_predicate

Constructor Details

#initialize(cask, **args) ⇒ Installer

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Installer.

Raises:


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'Library/Homebrew/cask/artifact/installer.rb', line 74

def initialize(cask, **args)
  super(cask)

  if args.key?(:manual)
    @path = Pathname(args[:manual])
    @args = []
    extend(ManualInstaller)
    return
  end

  path, @args = self.class.read_script_arguments(
    args[:script], self.class.dsl_key.to_s, { must_succeed: true, sudo: false }, print_stdout: true
  )
  raise CaskInvalidError.new(cask, "#{self.class.dsl_key} missing executable") if path.nil?

  @path = Pathname(path)
  extend(ScriptInstaller)
end

Instance Attribute Details

#argsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


72
73
74
# File 'Library/Homebrew/cask/artifact/installer.rb', line 72

def args
  @args
end

#pathObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


72
73
74
# File 'Library/Homebrew/cask/artifact/installer.rb', line 72

def path
  @path
end

Class Method Details

.from_args(cask, **args) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'Library/Homebrew/cask/artifact/installer.rb', line 48

def self.from_args(cask, **args)
  raise CaskInvalidError.new(cask, "'installer' stanza requires an argument.") if args.empty?

  if args.key?(:script) && !args[:script].respond_to?(:key?)
    if args.key?(:executable)
      raise CaskInvalidError.new(cask, "'installer' stanza gave arguments for both :script and :executable.")
    end

    args[:executable] = args[:script]
    args.delete(:script)
    args = { script: args }
  end

  unless args.keys.count == 1
    raise CaskInvalidError.new(
      cask,
      "invalid 'installer' stanza: Only one of #{VALID_KEYS.inspect} is permitted.",
    )
  end

  args.assert_valid_keys!(*VALID_KEYS)
  new(cask, **args)
end

Instance Method Details

#summarizeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


93
94
95
# File 'Library/Homebrew/cask/artifact/installer.rb', line 93

def summarize
  path.to_s
end

#to_hObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


97
98
99
100
101
# File 'Library/Homebrew/cask/artifact/installer.rb', line 97

def to_h
  { path: path }.tap do |h|
    h[:args] = args unless is_a?(ManualInstaller)
  end
end