brew/Library/Homebrew/build_environment.rb

53 lines
798 B
Ruby
Raw Normal View History

require 'set'
class BuildEnvironment
def initialize(*settings)
@settings = Set.new(settings)
@procs = Set.new
end
2014-07-07 09:15:56 -05:00
def merge(*args)
@settings.merge(*args)
end
def <<(o)
case o
when Proc then @procs << o
else @settings << o
end
self
end
def std?
@settings.include? :std
end
def userpaths?
@settings.include? :userpaths
end
def modify_build_environment(receiver)
@procs.each { |p| receiver.instance_eval(&p) }
end
def _dump(*)
@settings.to_a.join(":")
end
def self._load(s)
new(*s.split(":").map(&:to_sym))
end
end
module BuildEnvironmentDSL
def env(*settings, &block)
@env ||= BuildEnvironment.new
if block_given?
@env << block
else
2014-07-07 09:15:56 -05:00
@env.merge(settings)
end
@env
end
end