Class: Caveats Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
extend/os/mac/caveats.rb,
caveats.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.

A formula’s caveats.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(f) ⇒ Caveats

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 a new instance of Caveats.



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

def initialize(f)
  @f = f
end

Instance Attribute Details

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



12
13
14
# File 'caveats.rb', line 12

def f
  @f
end

Instance Method Details

#caveatsObject

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.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'caveats.rb', line 18

def caveats
  caveats = []
  begin
    build = f.build
    f.build = Tab.for_formula(f)
    s = f.caveats.to_s
    caveats << "#{s.chomp}\n" unless s.empty?
  ensure
    f.build = build
  end
  caveats << keg_only_text

  valid_shells = [:bash, :zsh, :fish].freeze
  current_shell = Utils::Shell.preferred || Utils::Shell.parent
  shells = if current_shell.present? &&
              (shell_sym = current_shell.to_sym) &&
              valid_shells.include?(shell_sym)
    [shell_sym]
  else
    valid_shells
  end
  shells.each do |shell|
    caveats << function_completion_caveats(shell)
  end

  caveats << plist_caveats
  caveats << elisp_caveats
  caveats.compact.join("\n")
end

#keg_only_text(skip_reason: false) ⇒ 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.



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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'caveats.rb', line 50

def keg_only_text(skip_reason: false)
  return unless f.keg_only?

  s = if skip_reason
    ""
  else
    <<~EOS
      #{f.name} is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX},
      because #{f.keg_only_reason.to_s.chomp}.
    EOS
  end.dup

  if f.bin.directory? || f.sbin.directory?
    s << <<~EOS

      If you need to have #{f.name} first in your PATH, run:
    EOS
    s << "  #{Utils::Shell.prepend_path_in_profile(f.opt_bin.to_s)}\n" if f.bin.directory?
    s << "  #{Utils::Shell.prepend_path_in_profile(f.opt_sbin.to_s)}\n" if f.sbin.directory?
  end

  if f.lib.directory? || f.include.directory?
    s << <<~EOS

      For compilers to find #{f.name} you may need to set:
    EOS

    s << "  #{Utils::Shell.export_value("LDFLAGS", "-L#{f.opt_lib}")}\n" if f.lib.directory?

    s << "  #{Utils::Shell.export_value("CPPFLAGS", "-I#{f.opt_include}")}\n" if f.include.directory?

    if which("pkg-config", ENV["HOMEBREW_PATH"]) &&
       ((f.lib/"pkgconfig").directory? || (f.share/"pkgconfig").directory?)
      s << <<~EOS

        For pkg-config to find #{f.name} you may need to set:
      EOS

      if (f.lib/"pkgconfig").directory?
        s << "  #{Utils::Shell.export_value("PKG_CONFIG_PATH", "#{f.opt_lib}/pkgconfig")}\n"
      end

      if (f.share/"pkgconfig").directory?
        s << "  #{Utils::Shell.export_value("PKG_CONFIG_PATH", "#{f.opt_share}/pkgconfig")}\n"
      end
    end
  end
  s << "\n"
end