Class: AbstractTab Private
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.
Rather than calling new
directly, use one of the class methods like Tab.create.
Constant Summary collapse
- FILENAME =
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.
"INSTALL_RECEIPT.json"
Instance Attribute Summary collapse
- #arch ⇒ Object private
- #built_on ⇒ Object private
- #homebrew_version ⇒ Object private
-
#installed_as_dependency ⇒ Object
internal
Check whether the formula or cask was installed as a dependency.
-
#installed_on_request ⇒ Object
internal
Check whether the formula or cask was installed on request.
- #loaded_from_api ⇒ Object private
-
#runtime_dependencies ⇒ Object
internal
Returns the formula or cask runtime dependencies.
- #source ⇒ Object private
- #tabfile ⇒ Object private
- #time ⇒ Object private
Class Method Summary collapse
-
.create(formula_or_cask) ⇒ Object
private
Instantiates a Tab for a new installation of a formula or cask.
- .empty ⇒ Object private
-
.from_file(path) ⇒ Object
private
Returns the Tab for a formula or cask install receipt at
path
. -
.from_file_content(content, path) ⇒ Object
private
Like AbstractTab.from_file, but bypass the cache.
Instance Method Summary collapse
-
#initialize(attributes = {}) ⇒ AbstractTab
constructor
private
A new instance of AbstractTab.
- #parsed_homebrew_version ⇒ Object private
- #tap ⇒ Tap? private
- #tap=(tap) ⇒ Object private
- #write ⇒ Object private
Methods included from Cachable
Constructor Details
#initialize(attributes = {}) ⇒ AbstractTab
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 AbstractTab.
107 108 109 |
# File 'tab.rb', line 107 def initialize(attributes = {}) attributes.each { |key, value| instance_variable_set(:"@#{key}", value) } end |
Instance Attribute Details
#arch ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def arch @arch end |
#built_on ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def built_on @built_on end |
#homebrew_version ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def homebrew_version @homebrew_version end |
#installed_as_dependency ⇒ Object
This method is part of an internal API. This method may only be used internally in repositories owned by Homebrew, except in casks or formulae. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Check whether the formula or cask was installed as a dependency.
19 20 21 |
# File 'tab.rb', line 19 def installed_as_dependency @installed_as_dependency end |
#installed_on_request ⇒ Object
This method is part of an internal API. This method may only be used internally in repositories owned by Homebrew, except in casks or formulae. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Check whether the formula or cask was installed on request.
24 25 26 |
# File 'tab.rb', line 24 def installed_on_request @installed_on_request end |
#loaded_from_api ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def loaded_from_api @loaded_from_api end |
#runtime_dependencies ⇒ Object
This method is part of an internal API. This method may only be used internally in repositories owned by Homebrew, except in casks or formulae. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns the formula or cask runtime dependencies.
31 32 33 |
# File 'tab.rb', line 31 def runtime_dependencies @runtime_dependencies end |
#source ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def source @source end |
#tabfile ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def tabfile @tabfile end |
#time ⇒ 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.
26 27 28 |
# File 'tab.rb', line 26 def time @time end |
Class Method Details
.create(formula_or_cask) ⇒ 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.
Instantiates a Tab for a new installation of a formula or cask.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'tab.rb', line 34 def self.create(formula_or_cask) attributes = { "homebrew_version" => HOMEBREW_VERSION, "installed_as_dependency" => false, "installed_on_request" => false, "loaded_from_api" => formula_or_cask.loaded_from_api?, "time" => Time.now.to_i, "arch" => Hardware::CPU.arch, "source" => { "tap" => formula_or_cask.tap&.name, "tap_git_head" => formula_or_cask.tap_git_head, }, "built_on" => DevelopmentTools.build_system_info, } new(attributes) end |
.empty ⇒ 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.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'tab.rb', line 76 def self.empty attributes = { "homebrew_version" => HOMEBREW_VERSION, "installed_as_dependency" => false, "installed_on_request" => false, "loaded_from_api" => false, "time" => nil, "runtime_dependencies" => nil, "arch" => nil, "source" => { "path" => nil, "tap" => nil, "tap_git_head" => nil, }, "built_on" => DevelopmentTools.build_system_info, } new(attributes) end |
.from_file(path) ⇒ 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.
Results are cached.
Returns the Tab for a formula or cask install receipt at path
.
55 56 57 58 59 60 61 62 |
# File 'tab.rb', line 55 def self.from_file(path) cache.fetch(path) do |p| content = File.read(p) return empty if content.blank? cache[p] = from_file_content(content, p) end end |
.from_file_content(content, path) ⇒ 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.
Like from_file, but bypass the cache.
65 66 67 68 69 70 71 72 73 74 |
# File 'tab.rb', line 65 def self.from_file_content(content, path) attributes = begin JSON.parse(content) rescue JSON::ParserError => e raise e, "Cannot parse #{path}: #{e}", e.backtrace end attributes["tabfile"] = path new(attributes) end |
Instance Method Details
#parsed_homebrew_version ⇒ 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.
111 112 113 114 115 |
# File 'tab.rb', line 111 def parsed_homebrew_version return Version::NULL if homebrew_version.nil? Version.new(homebrew_version) end |
#tap ⇒ Tap?
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.
118 119 120 121 |
# File 'tab.rb', line 118 def tap tap_name = source["tap"] Tap.fetch(tap_name) if tap_name end |
#tap=(tap) ⇒ 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.
123 124 125 126 |
# File 'tab.rb', line 123 def tap=(tap) tap_name = tap.respond_to?(:name) ? tap.name : tap source["tap"] = tap_name end |
#write ⇒ 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.
128 129 130 131 |
# File 'tab.rb', line 128 def write self.class.cache[tabfile] = self tabfile.atomic_write(to_json) end |