Class: Cask::Artifact::Relocated Private

Inherits:
AbstractArtifact show all
Extended by:
T::Sig
Defined in:
cask/artifact/relocated.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.

Superclass for all artifacts which have a source and a target location.

Direct Known Subclasses

Moved, Symlinked

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, source, target: nil) ⇒ void

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.

Parameters:



48
49
50
51
52
53
54
55
56
57
# File 'cask/artifact/relocated.rb', line 48

def initialize(cask, source, target: nil)
  super(cask)

  @source_string = source.to_s
  @target_string = target.to_s
  source = cask.staged_path.join(source)
  @source = source
  target ||= source.basename
  @target = resolve_target(target)
end

Instance Attribute Details

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



42
43
44
# File 'cask/artifact/relocated.rb', line 42

def source
  @source
end

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



42
43
44
# File 'cask/artifact/relocated.rb', line 42

def target
  @target
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.



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'cask/artifact/relocated.rb', line 17

def self.from_args(cask, *args)
  source_string, target_hash = args

  if target_hash
    raise CaskInvalidError unless target_hash.respond_to?(:keys)

    target_hash.assert_valid_keys!(:target)
  end

  target_hash ||= {}

  new(cask, source_string, **target_hash)
end

Instance Method Details

#resolve_target(target, base_dir: config.public_send(self.class.dirmethod)) ⇒ 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.



31
32
33
34
35
36
37
38
39
40
# File 'cask/artifact/relocated.rb', line 31

def resolve_target(target, base_dir: config.public_send(self.class.dirmethod))
  target = Pathname(target)

  if target.relative?
    return target.expand_path if target.descend.first.to_s == "~"
    return base_dir/target if base_dir
  end

  target
end

#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:



66
67
68
69
# File 'cask/artifact/relocated.rb', line 66

def summarize
  target_string = @target_string.empty? ? "" : " -> #{@target_string}"
  "#{@source_string}#{target_string}"
end

#to_aObject

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.



59
60
61
62
63
# File 'cask/artifact/relocated.rb', line 59

def to_a
  [@source_string].tap do |ary|
    ary << { target: @target_string } unless @target_string.empty?
  end
end