brew/Library/Homebrew/api/versions.rb

60 lines
1.6 KiB
Ruby
Raw Normal View History

2021-08-06 02:30:44 -04:00
# typed: false
# frozen_string_literal: true
module Homebrew
module API
# Helper functions for using the versions JSON API.
#
# @api private
module Versions
2021-08-09 16:48:13 -04:00
class << self
extend T::Sig
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
def formulae
# The result is cached by Homebrew::API.fetch
Homebrew::API.fetch "versions-formulae.json"
end
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
def linux
# The result is cached by Homebrew::API.fetch
Homebrew::API.fetch "versions-linux.json"
end
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
def casks
# The result is cached by Homebrew::API.fetch
Homebrew::API.fetch "versions-casks.json"
2021-08-06 02:30:44 -04:00
end
2021-08-09 16:48:13 -04:00
sig { params(name: String).returns(T.nilable(PkgVersion)) }
def latest_formula_version(name)
versions = if OS.mac? ||
Homebrew::EnvConfig.force_homebrew_on_linux? ||
Homebrew::EnvConfig.force_homebrew_core_repo_on_linux?
2021-08-09 16:48:13 -04:00
formulae
else
linux
end
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
return unless versions.key? name
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
version = Version.new(versions[name]["version"])
revision = versions[name]["revision"]
PkgVersion.new(version, revision)
end
2021-08-06 02:30:44 -04:00
2021-08-09 16:48:13 -04:00
sig { params(token: String).returns(T.nilable(Version)) }
def latest_cask_version(token)
return unless casks.key? token
2021-08-26 22:52:43 -04:00
version = if casks[token]["versions"].key? MacOS.version.to_sym.to_s
casks[token]["versions"][MacOS.version.to_sym.to_s]
else
casks[token]["version"]
end
Version.new(version)
2021-08-09 16:48:13 -04:00
end
2021-08-06 02:30:44 -04:00
end
end
end
end