Class: Cask::Artifact::Relocated Private

Inherits:
AbstractArtifact show all
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

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

Constructor Details

#initialize(cask, source, **target_hash) ⇒ 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:



40
41
42
43
44
45
46
# File 'cask/artifact/relocated.rb', line 40

def initialize(cask, source, **target_hash)
  super

  target = target_hash[:target]
  @source_string = source.to_s
  @target_string = target.to_s
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.



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'cask/artifact/relocated.rb', line 11

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

  if target_hash
    raise CaskInvalidError, cask 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.



25
26
27
28
29
30
31
32
33
34
# File 'cask/artifact/relocated.rb', line 25

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

#sourceObject

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.



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

def source
  @source ||= begin
    base_path = cask.staged_path
    base_path = base_path.join(cask.url.only_path) if cask.url&.only_path.present?
    base_path.join(@source_string)
  end
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:



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

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

#targetObject

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.



56
57
58
# File 'cask/artifact/relocated.rb', line 56

def target
  @target ||= resolve_target(@target_string.presence || source.basename)
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.



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

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