mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Add type signatures to BuildEnvironment
.
This commit is contained in:
parent
220b4606ca
commit
70dd41cfd8
@ -1,34 +1,44 @@
|
|||||||
# typed: false
|
# typed: true
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# Settings for the build environment.
|
# Settings for the build environment.
|
||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class BuildEnvironment
|
class BuildEnvironment
|
||||||
|
extend T::Sig
|
||||||
|
|
||||||
|
sig { params(settings: Symbol).void }
|
||||||
def initialize(*settings)
|
def initialize(*settings)
|
||||||
@settings = Set.new(*settings)
|
@settings = Set.new(settings)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(args: T::Enumerable[Symbol]).returns(T.self_type) }
|
||||||
def merge(*args)
|
def merge(*args)
|
||||||
@settings.merge(*args)
|
@settings.merge(*args)
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(o: Symbol).returns(T.self_type) }
|
||||||
def <<(o)
|
def <<(o)
|
||||||
@settings << o
|
@settings << o
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def std?
|
def std?
|
||||||
@settings.include? :std
|
@settings.include? :std
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def userpaths?
|
def userpaths?
|
||||||
@settings.include? :userpaths
|
@settings.include? :userpaths
|
||||||
end
|
end
|
||||||
|
|
||||||
# DSL for specifying build environment settings.
|
# DSL for specifying build environment settings.
|
||||||
module DSL
|
module DSL
|
||||||
|
extend T::Sig
|
||||||
|
|
||||||
|
sig { params(settings: Symbol).returns(BuildEnvironment) }
|
||||||
def env(*settings)
|
def env(*settings)
|
||||||
@env ||= BuildEnvironment.new
|
@env ||= BuildEnvironment.new
|
||||||
@env.merge(settings)
|
@env.merge(settings)
|
||||||
@ -50,16 +60,18 @@ class BuildEnvironment
|
|||||||
].freeze
|
].freeze
|
||||||
private_constant :KEYS
|
private_constant :KEYS
|
||||||
|
|
||||||
|
sig { params(env: T.untyped).returns(T::Array[String]) }
|
||||||
def self.keys(env)
|
def self.keys(env)
|
||||||
KEYS & env.keys
|
KEYS & env.keys
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(env: T.untyped, f: IO).void }
|
||||||
def self.dump(env, f = $stdout)
|
def self.dump(env, f = $stdout)
|
||||||
keys = self.keys(env)
|
keys = self.keys(env)
|
||||||
keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"]
|
keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"]
|
||||||
|
|
||||||
keys.each do |key|
|
keys.each do |key|
|
||||||
value = env[key]
|
value = env.fetch(key)
|
||||||
s = +"#{key}: #{value}"
|
s = +"#{key}: #{value}"
|
||||||
case key
|
case key
|
||||||
when "CC", "CXX", "LD"
|
when "CC", "CXX", "LD"
|
||||||
|
@ -47,11 +47,10 @@ module Homebrew
|
|||||||
Utils::Shell.from_path(args.shell)
|
Utils::Shell.from_path(args.shell)
|
||||||
end
|
end
|
||||||
|
|
||||||
env_keys = BuildEnvironment.keys(ENV)
|
|
||||||
if shell.nil?
|
if shell.nil?
|
||||||
BuildEnvironment.dump ENV
|
BuildEnvironment.dump ENV
|
||||||
else
|
else
|
||||||
env_keys.each do |key|
|
BuildEnvironment.keys(ENV).each do |key|
|
||||||
puts Utils::Shell.export_value(key, ENV[key], shell)
|
puts Utils::Shell.export_value(key, ENV[key], shell)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user