Module: Homebrew::API::Formula Private

Extended by:
Cachable
Defined in:
api/formula.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.

Helper functions for using the formula JSON API.

Class Method Summary collapse

Methods included from Cachable

cache, clear_cache

Class Method Details

.all_aliasesHash{String => 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.

Returns:



75
76
77
78
79
80
81
82
# File 'api/formula.rb', line 75

def self.all_aliases
  unless cache.key?("aliases")
    json_updated = download_and_cache_data!
    write_names_and_aliases(regenerate: json_updated)
  end

  cache["aliases"]
end

.all_formulaeHash{String => Hash}

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:



65
66
67
68
69
70
71
72
# File 'api/formula.rb', line 65

def self.all_formulae
  unless cache.key?("formulae")
    json_updated = download_and_cache_data!
    write_names_and_aliases(regenerate: json_updated)
  end

  cache["formulae"]
end

.all_renamesHash{String => 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.

Returns:



85
86
87
88
89
90
91
92
# File 'api/formula.rb', line 85

def self.all_renames
  unless cache.key?("renames")
    json_updated = download_and_cache_data!
    write_names_and_aliases(regenerate: json_updated)
  end

  cache["renames"]
end

.fetch(name) ⇒ Hash

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.

Parameters:

Returns:



16
17
18
# File 'api/formula.rb', line 16

def self.fetch(name)
  Homebrew::API.fetch "formula/#{name}.json"
end

.source_download(formula) ⇒ ::Formula

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.

Parameters:

Returns:



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'api/formula.rb', line 21

def self.source_download(formula)
  path = formula.ruby_source_path || "Formula/#{formula.name}.rb"
  git_head = formula.tap_git_head || "HEAD"
  tap = formula.tap&.full_name || "Homebrew/homebrew-core"

  download = Homebrew::API::Download.new(
    "https://raw.githubusercontent.com/#{tap}/#{git_head}/#{path}",
    formula.ruby_source_checksum,
    cache: HOMEBREW_CACHE_API_SOURCE/"#{tap}/#{git_head}/Formula",
  )
  download.fetch
  Formulary.factory(download.symlink_location,
                    formula.active_spec_sym,
                    alias_path: formula.alias_path,
                    flags:      formula.class.build_flags)
end

.tap_git_headString

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:



106
107
108
109
110
111
112
113
114
# File 'api/formula.rb', line 106

def self.tap_git_head
  # Note sure we need to reload here.
  unless cache.key?("tap_git_head")
    json_updated = download_and_cache_data!
    write_names_and_aliases(regenerate: json_updated)
  end

  cache["tap_git_head"]
end

.tap_migrationsHash

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:



95
96
97
98
99
100
101
102
103
# File 'api/formula.rb', line 95

def self.tap_migrations
  # Not sure that we need to reload here.
  unless cache.key?("tap_migrations")
    json_updated = download_and_cache_data!
    write_names_and_aliases(regenerate: json_updated)
  end

  cache["tap_migrations"]
end

.write_names_and_aliases(regenerate: false) ⇒ void

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 returns an undefined value.

Parameters:

  • regenerate (Boolean) (defaults to: false)


117
118
119
120
121
122
123
124
125
126
127
# File 'api/formula.rb', line 117

def self.write_names_and_aliases(regenerate: false)
  download_and_cache_data! unless cache.key?("formulae")

  return unless Homebrew::API.write_names_file(all_formulae.keys, "formula", regenerate:)

  (HOMEBREW_CACHE_API/"formula_aliases.txt").open("w") do |file|
    all_aliases.each do |alias_name, real_name|
      file.puts "#{alias_name}|#{real_name}"
    end
  end
end