os: use native ruby calls for uname

This avoids the overhead of shelling out.
This commit is contained in:
Carlo Cabrera 2024-10-31 15:01:43 +08:00
parent 37dc93131c
commit bc21cf366e
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0

View File

@ -30,8 +30,8 @@ module OS
# @api public
sig { returns(Version) }
def self.kernel_version
require "utils/popen"
@kernel_version ||= T.let(Version.new(Utils.safe_popen_read("uname", "-r").chomp), T.nilable(Version))
require "etc"
@kernel_version ||= T.let(Version.new(Etc.uname.fetch(:release)), T.nilable(Version))
end
# Get the kernel name.
@ -39,8 +39,8 @@ module OS
# @api public
sig { returns(String) }
def self.kernel_name
require "utils/popen"
@kernel_name ||= T.let(Utils.safe_popen_read("uname", "-s").chomp, T.nilable(String))
require "etc"
@kernel_name ||= T.let(Etc.uname.fetch(:sysname), T.nilable(String))
end
::OS_VERSION = T.let(ENV.fetch("HOMEBREW_OS_VERSION").freeze, String)