2012-09-14 07:54:14 -07:00
|
|
|
require 'set'
|
|
|
|
|
|
|
|
class BuildEnvironment
|
2012-12-23 19:43:10 -06:00
|
|
|
def initialize(*settings)
|
2012-09-14 07:54:14 -07:00
|
|
|
@settings = Set.new(settings)
|
2013-02-25 14:01:02 -06:00
|
|
|
@procs = Set.new
|
2012-09-14 07:54:14 -07:00
|
|
|
end
|
|
|
|
|
2012-12-23 19:43:10 -06:00
|
|
|
def <<(o)
|
2013-02-25 14:01:02 -06:00
|
|
|
case o
|
|
|
|
when Proc then @procs << o
|
|
|
|
else @settings << o
|
|
|
|
end
|
2012-12-23 19:43:10 -06:00
|
|
|
self
|
|
|
|
end
|
|
|
|
|
2012-09-14 07:54:14 -07:00
|
|
|
def std?
|
|
|
|
@settings.include? :std
|
|
|
|
end
|
|
|
|
|
|
|
|
def userpaths?
|
|
|
|
@settings.include? :userpaths
|
|
|
|
end
|
2013-01-19 20:45:57 -06:00
|
|
|
|
2013-01-19 20:45:58 -06:00
|
|
|
def modify_build_environment(context=nil)
|
2013-02-25 14:01:02 -06:00
|
|
|
@procs.each { |p| ENV.instance_exec(context, &p) }
|
2013-01-19 20:45:57 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
def _dump(*)
|
2013-02-25 14:01:02 -06:00
|
|
|
@settings.to_a.join(":")
|
2013-01-19 20:45:57 -06:00
|
|
|
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
|
|
|
|
settings.each { |s| @env << s }
|
|
|
|
end
|
|
|
|
@env
|
|
|
|
end
|
2012-09-14 07:54:14 -07:00
|
|
|
end
|