Class: CaskDependent Private

Inherits:
Object show all
Defined in:
cask_dependent.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.

An adapter for casks to provide dependency information in a formula-like interface.

Defined Under Namespace

Classes: Requirement

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cask) ⇒ 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:



19
20
21
# File 'cask_dependent.rb', line 19

def initialize(cask)
  @cask = T.let(cask, Cask::Cask)
end

Instance Attribute Details

#caskCask::Cask (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.

Returns:



16
17
18
# File 'cask_dependent.rb', line 16

def cask
  @cask
end

Instance Method Details

#any_version_installed?Boolean

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:

  • (Boolean)


91
92
93
# File 'cask_dependent.rb', line 91

def any_version_installed?
  @cask.installed?
end

#depsArray<Dependency>

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:



39
40
41
42
43
44
45
46
# File 'cask_dependent.rb', line 39

def deps
  @deps ||= T.let(
    @cask.depends_on.formula.map do |f|
      Dependency.new f
    end,
    T.nilable(T::Array[Dependency]),
  )
end

#full_nameString

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:



29
30
31
# File 'cask_dependent.rb', line 29

def full_name
  @cask.full_name
end

#nameString

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:



24
25
26
# File 'cask_dependent.rb', line 24

def name
  @cask.token
end

#recursive_dependencies(&block) ⇒ Array<Dependency>

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:

  • block (T.proc.returns(T::Array[Dependency]), nil)

Returns:



81
82
83
# File 'cask_dependent.rb', line 81

def recursive_dependencies(&block)
  Dependency.expand(self, &block)
end

#recursive_requirements(&block) ⇒ Requirements

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:

Returns:



86
87
88
# File 'cask_dependent.rb', line 86

def recursive_requirements(&block)
  Requirement.expand(self, &block)
end

#requirementsArray<CaskDependent::Requirement>

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.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'cask_dependent.rb', line 49

def requirements
  @requirements ||= T.let(
    begin
      requirements = []
      dsl_reqs = @cask.depends_on

      dsl_reqs.arch&.each do |arch|
        arch = if arch[:bits] == 64
          if arch[:type] == :intel
            :x86_64
          else
            :"#{arch[:type]}64"
          end
        elsif arch[:type] == :intel && arch[:bits] == 32
          :i386
        else
          arch[:type]
        end
        requirements << ArchRequirement.new([arch])
      end
      dsl_reqs.cask.each do |cask_ref|
        requirements << CaskDependent::Requirement.new([{ cask: cask_ref }])
      end
      requirements << dsl_reqs.macos if dsl_reqs.macos

      requirements
    end,
    T.nilable(T::Array[CaskDependent::Requirement]),
  )
end

#runtime_dependenciesArray<Dependency>

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:



34
35
36
# File 'cask_dependent.rb', line 34

def runtime_dependencies
  deps.flat_map { |dep| [dep, *dep.to_formula.runtime_dependencies] }.uniq
end