| 
									
										
										
										
											2017-07-01 07:37:16 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-08 18:32:05 +08:00
										 |  |  | const handleExport = options => { | 
					
						
							|  |  |  | 	const isES6DefaultExported = ( | 
					
						
							|  |  |  | 		typeof options === "object" && options !== null && typeof options.default !== "undefined" | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 	options = isES6DefaultExported ? options.default : options; | 
					
						
							|  |  |  | 	return options; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const handleFunction = (options, argv) => { | 
					
						
							|  |  |  | 	if(typeof options === "function") { | 
					
						
							|  |  |  | 		options = options(argv.env, argv); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return options; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = (options, argv) => { | 
					
						
							| 
									
										
										
										
											2017-07-01 07:37:16 +08:00
										 |  |  | 	argv = argv || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	options = handleExport(options); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if(Array.isArray(options)) { | 
					
						
							|  |  |  | 		options = options.map(_options => handleFunction(_options, argv)); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		options = handleFunction(options, argv); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return options; | 
					
						
							|  |  |  | }; |