Class: KegOnlyReason

Inherits:
Object show all
Defined in:
extend/os/mac/formula_support.rb,
formula_support.rb

Overview

Used to annotate formulae that duplicate macOS-provided software or cause conflicts when linked in.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reason, explanation) ⇒ KegOnlyReason

Returns a new instance of KegOnlyReason.



12
13
14
15
# File 'formula_support.rb', line 12

def initialize(reason, explanation)
  @reason = reason
  @explanation = explanation
end

Instance Attribute Details

#reasonObject (readonly)

Returns the value of attribute reason.



10
11
12
# File 'formula_support.rb', line 10

def reason
  @reason
end

Instance Method Details

#applicable?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'extend/os/mac/formula_support.rb', line 6

def applicable?
  true
end

#by_macos?Boolean

Returns:

  • (Boolean)


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

def by_macos?
  provided_by_macos? || shadowed_by_macos?
end

#provided_by_macos?Boolean

Returns:

  • (Boolean)


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

def provided_by_macos?
  @reason == :provided_by_macos
end

#shadowed_by_macos?Boolean

Returns:

  • (Boolean)


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

def shadowed_by_macos?
  @reason == :shadowed_by_macos
end

#to_hashObject



62
63
64
65
66
67
68
69
70
71
72
73
# File 'formula_support.rb', line 62

def to_hash
  reason_string = if @reason.is_a?(Symbol)
    @reason.inspect
  else
    @reason.to_s
  end

  {
    "reason"      => reason_string,
    "explanation" => @explanation,
  }
end

#to_sObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'formula_support.rb', line 40

def to_s
  return @explanation unless @explanation.empty?

  if versioned_formula?
    <<~EOS
      this is an alternate version of another formula
    EOS
  elsif provided_by_macos?
    <<~EOS
      macOS already provides this software and installing another version in
      parallel can cause all kinds of trouble
    EOS
  elsif shadowed_by_macos?
    <<~EOS
      macOS provides similar software and installing this software in
      parallel can cause all kinds of trouble
    EOS
  else
    @reason
  end.strip
end

#versioned_formula?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'formula_support.rb', line 17

def versioned_formula?
  @reason == :versioned_formula
end