Class: Cask::Artifact::Installer Private

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

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

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. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.

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_args

Methods included from Attrable

#attr_predicate, #attr_rw

Constructor Details

#initialize(cask, **args) ⇒ Installer

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns a new instance of Installer.

Raises:



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'cask/artifact/installer.rb', line 71

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

  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. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



69
70
71
# File 'cask/artifact/installer.rb', line 69

def args
  @args
end

#pathObject (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



69
70
71
# File 'cask/artifact/installer.rb', line 69

def path
  @path
end

Class Method Details

.from_args(cask, **args) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Raises:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'cask/artifact/installer.rb', line 45

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

  if 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. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



90
91
92
# File 'cask/artifact/installer.rb', line 90

def summarize
  path.to_s
end

#to_hObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



94
95
96
97
98
# File 'cask/artifact/installer.rb', line 94

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