| 
									
										
										
										
											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-04-01 12:05:57 -05:00
										 |  |  |   def modify_build_environment(receiver) | 
					
						
							|  |  |  |     @procs.each { |p| receiver.instance_eval(&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 |