Class: Cask::Artifact::AbstractUninstall Private

Inherits:
AbstractArtifact show all
Includes:
SystemCommand::Mixin
Defined in:
cask/artifact/abstract_uninstall.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.

Abstract superclass for uninstall artifacts.

Direct Known Subclasses

Uninstall, Zap

Constant Summary collapse

ORDERED_DIRECTIVES =

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.

[
  :early_script,
  :launchctl,
  :quit,
  :signal,
  :login_item,
  :kext,
  :script,
  :pkgutil,
  :delete,
  :trash,
  :rmdir,
].freeze

Instance Attribute Summary collapse

Attributes inherited from AbstractArtifact

#cask

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SystemCommand::Mixin

#system_command, #system_command!

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, **directives) ⇒ AbstractUninstall

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 AbstractUninstall.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'cask/artifact/abstract_uninstall.rb', line 38

def initialize(cask, **directives)
  directives.assert_valid_keys(*ORDERED_DIRECTIVES)

  super(cask, **directives)
  directives[:signal] = Array(directives[:signal]).flatten.each_slice(2).to_a
  @directives = directives

  # This is already included when loading from the API.
  return if cask.loaded_from_api?
  return unless directives.key?(:kext)

  cask.caveats do
    T.bind(self, ::Cask::DSL::Caveats)
    kext
  end
end

Instance Attribute Details

#directivesObject (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.



36
37
38
# File 'cask/artifact/abstract_uninstall.rb', line 36

def directives
  @directives
end

Class Method Details

.from_args(cask, **directives) ⇒ 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.



32
33
34
# File 'cask/artifact/abstract_uninstall.rb', line 32

def self.from_args(cask, **directives)
  new(cask, **directives)
end

Instance Method Details

#summarizeString

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:



60
61
62
# File 'cask/artifact/abstract_uninstall.rb', line 60

def summarize
  to_h.flat_map { |key, val| Array(val).map { |v| "#{key.inspect} => #{v.inspect}" } }.join(", ")
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.



55
56
57
# File 'cask/artifact/abstract_uninstall.rb', line 55

def to_h
  directives.to_h
end