Module: Dependable Abstract Private

Extended by:
T::Helpers
Included in:
Dependency, Requirement
Defined in:
dependable.rb

Overview

This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.

This module is abstract.

Subclasses must implement the abstract methods below.

Shared functions for classes which can be depended upon.

Constant Summary collapse

RESERVED_TAGS =

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.

:run and :linked are no longer used but keep them here to avoid their misuse in future.

[:build, :optional, :recommended, :run, :test, :linked, :implicit].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

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



14
15
16
# File 'dependable.rb', line 14

def tags
  @tags
end

Instance Method Details

#build?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)


21
22
23
# File 'dependable.rb', line 21

def build?
  tags.include? :build
end

#implicit?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)


37
38
39
# File 'dependable.rb', line 37

def implicit?
  tags.include? :implicit
end

#option_namesArray<String>

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.

This method is abstract.

Returns:



19
# File 'dependable.rb', line 19

def option_names; end

#option_tagsObject

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.



45
46
47
# File 'dependable.rb', line 45

def option_tags
  tags - RESERVED_TAGS
end

#optional?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)


25
26
27
# File 'dependable.rb', line 25

def optional?
  tags.include? :optional
end

#optionsObject

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
# File 'dependable.rb', line 49

def options
  Options.create(option_tags)
end

#prune_from_option?(build) ⇒ 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)


53
54
55
56
57
# File 'dependable.rb', line 53

def prune_from_option?(build)
  return false if !optional? && !recommended?

  build.without?(self)
end

#prune_if_build_and_not_dependent?(dependent, formula = nil) ⇒ 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)


59
60
61
62
63
64
# File 'dependable.rb', line 59

def prune_if_build_and_not_dependent?(dependent, formula = nil)
  return false unless build?
  return dependent.installed? unless formula

  dependent != formula
end

#recommended?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)


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

def recommended?
  tags.include? :recommended
end

#required?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)


41
42
43
# File 'dependable.rb', line 41

def required?
  !build? && !test? && !optional? && !recommended?
end

#test?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)


33
34
35
# File 'dependable.rb', line 33

def test?
  tags.include? :test
end