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

Returns:



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