Class: FormulaInfo Private

Inherits:
Object
  • Object
show all
Defined in:
Library/Homebrew/formula_info.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Formula information drawn from an external brew info --json call.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(info) ⇒ FormulaInfo

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of FormulaInfo.


10
11
12
# File 'Library/Homebrew/formula_info.rb', line 10

def initialize(info)
  @info = info
end

Instance Attribute Details

#infoObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The whole info structure parsed from the JSON


8
9
10
# File 'Library/Homebrew/formula_info.rb', line 8

def info
  @info
end

Class Method Details

.force_utf8!(str) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


72
73
74
# File 'Library/Homebrew/formula_info.rb', line 72

def self.force_utf8!(str)
  str.force_encoding("UTF-8") if str.respond_to?(:force_encoding)
end

.lookup(name) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Looks up formula on disk and reads its info. Returns nil if formula is absent or if there was an error reading it.


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'Library/Homebrew/formula_info.rb', line 16

def self.lookup(name)
  json = Utils.popen_read(
    RUBY_PATH,
    ENV["HOMEBREW_RUBY_WARNINGS"],
    "-I", $LOAD_PATH.join(File::PATH_SEPARATOR),
    HOMEBREW_LIBRARY_PATH/"brew.rb",
    "info",
    "--json=v1",
    name
  )

  return unless $CHILD_STATUS.success?

  force_utf8!(json)
  FormulaInfo.new(JSON.parse(json)[0])
end

Instance Method Details

#any_bottle_tagObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


53
54
55
56
57
# File 'Library/Homebrew/formula_info.rb', line 53

def any_bottle_tag
  tag = Utils::Bottles.tag.to_s
  # Prefer native bottles as a convenience for download caching
  bottle_tags.include?(tag) ? tag : bottle_tags.first
end

#bottle_info(my_bottle_tag = Utils::Bottles.tag) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


39
40
41
42
43
44
45
46
47
# File 'Library/Homebrew/formula_info.rb', line 39

def bottle_info(my_bottle_tag = Utils::Bottles.tag)
  tag_s = my_bottle_tag.to_s
  return unless info["bottle"]["stable"]

  btl_info = info["bottle"]["stable"]["files"][tag_s]
  return unless btl_info

  { "url" => btl_info["url"], "sha256" => btl_info["sha256"] }
end

#bottle_info_anyObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


49
50
51
# File 'Library/Homebrew/formula_info.rb', line 49

def bottle_info_any
  bottle_info(any_bottle_tag)
end

#bottle_tagsObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


33
34
35
36
37
# File 'Library/Homebrew/formula_info.rb', line 33

def bottle_tags
  return [] unless info["bottle"]["stable"]

  info["bottle"]["stable"]["files"].keys
end

#pkg_version(spec_type = :stable) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


64
65
66
# File 'Library/Homebrew/formula_info.rb', line 64

def pkg_version(spec_type = :stable)
  PkgVersion.new(version(spec_type), revision)
end

#revisionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


68
69
70
# File 'Library/Homebrew/formula_info.rb', line 68

def revision
  info["revision"]
end

#version(spec_type) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


59
60
61
62
# File 'Library/Homebrew/formula_info.rb', line 59

def version(spec_type)
  version_str = info["versions"][spec_type.to_s]
  version_str && Version.create(version_str)
end