Initial verison of reading config from files
This commit is contained in:
		
							
								
								
									
										56
									
								
								rocket/src/main/scala/config.scala
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								rocket/src/main/scala/config.scala
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					package rocket
 | 
				
			||||||
 | 
					package config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File
 | 
				
			||||||
 | 
					import java.io.FileInputStream
 | 
				
			||||||
 | 
					import java.util.Properties
 | 
				
			||||||
 | 
					import scala.util.{Properties => SProperties}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Config(props: Properties) {
 | 
				
			||||||
 | 
					  private val msg = "Configuration is missing requested parameter "
 | 
				
			||||||
 | 
					  def getInt(name: String): Int = Option(props.getProperty(name).toInt).getOrElse(sys.error(msg+name))
 | 
				
			||||||
 | 
					  def getString(name: String): String = Option(props.getProperty(name)).getOrElse(sys.error(msg+name))
 | 
				
			||||||
 | 
					  def getBoolean(name: String): Boolean = Option(props.getProperty(name).toBoolean).getOrElse(sys.error(msg+name))
 | 
				
			||||||
 | 
					  def apply(name: String): Int = getInt(name)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  lazy val internal_config = getConfig()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def apply(name: String) = internal_config(name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private def getConfig(): Config = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    val filePath0 = 
 | 
				
			||||||
 | 
					      SProperties
 | 
				
			||||||
 | 
					        .envOrNone("ROCKET_CONFIG")
 | 
				
			||||||
 | 
					        .orElse(SProperties.propOrNone("rocket.config"))  
 | 
				
			||||||
 | 
					    if (filePath0.isEmpty)
 | 
				
			||||||
 | 
					      Console.err.println("""
 | 
				
			||||||
 | 
					      | WARNING: Could not find configuration file to load. 
 | 
				
			||||||
 | 
					      | Options are:
 | 
				
			||||||
 | 
					      |   (1) Set environmental variable ROCKET_CONFIG to the config file path
 | 
				
			||||||
 | 
					      |   (2) Set system property rocket.config to the config file path
 | 
				
			||||||
 | 
					      | Using default values for config.
 | 
				
			||||||
 | 
					      """.stripMargin)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    val filePath =
 | 
				
			||||||
 | 
					      filePath0.flatMap(fp => {
 | 
				
			||||||
 | 
					        val f = new File(fp)
 | 
				
			||||||
 | 
					        if (!f.isFile) {
 | 
				
			||||||
 | 
					          Console.err.println("""
 | 
				
			||||||
 | 
					          | WARNING: File '%s' is not a valid file path
 | 
				
			||||||
 | 
					          | Using default values for config
 | 
				
			||||||
 | 
					          """.format(fp).stripMargin)
 | 
				
			||||||
 | 
					          None
 | 
				
			||||||
 | 
					        } else Some(fp)
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    val props = new Properties()
 | 
				
			||||||
 | 
					    filePath.map(fp => props.load(new FileInputStream(fp)))
 | 
				
			||||||
 | 
					    new Config(props)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								rocket/src/main/scala/rocket.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								rocket/src/main/scala/rocket.config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					NWAYS 4
 | 
				
			||||||
		Reference in New Issue
	
	Block a user