2021-09-11 01:00:23 +01:00
|
|
|
# typed: true
|
2021-08-06 02:30:44 -04:00
|
|
|
# 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 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)
|
2021-10-20 11:01:38 +01:00
|
|
|
versions = formulae
|
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
|