2016-09-06 4 views
1

sbt内のファイルの内容を読み取ることはできますか? ユーザ名などを読むと言う。SBT:ディスクから変数を読み取ることはできますか?

+0

あなたはデータが、私が思うことを含む別のScalaファイルを読み込むことができます。この例を見てください(あなたのプロジェクトのどこかに定義されたケースクラスAppCredentialsがあるとします)。私はそれを行う方法を覚えていませんが、私はsbt設定の一部として複数のファイルを持つプロジェクトを見てきました。 –

+0

うーん...私はそれをプロジェクトに含めることは望ましくない。私はプロジェクトの外のどこかからそれを読んでいます。 '〜/ .credentials'です。 – Daniel

答えて

3

はい、SBT内のファイルを読むことができます。

case class AppCredentials(userName: String, pwd: String) // it's better to use Array[Char] for password 
val appCredentials = settingKey[AppCredentials]("The application credentials") 

appCredentials := { 
    val creds = IO.readLines(new File(Path.userHome.absolutePath + "/.credentials")) 
    val (user, pwd) = parseCredentials(creds) 
    AppCredentials(user, pwd) 
} 

name := appCredentials.value.userName 
+0

すぐにお返事ありがとうございます。 「あなたがケースクラスを持っていると仮定して」、やや混乱しています。ユーザー名とパスワード(両方の文字列)をインクルードして読み込むとします。ケースクラスはどのように見えますか?ファイルコンテンツ自体はどうですか? – Daniel

+1

混乱して申し訳ありません。つまり、ケースクラスAppCredentials(userName:String、password:String)のような資格情報のためのクラスが必要です。もちろん、〜.credentialsファイルを解析してコンテンツにアクセスする必要があります(自分の編集を参照)。 – leshkin

+0

別の質問です。なぜ、 'settingKey'を使用していますか?なぜファイルを解析した直後に値を使用しないのですか? – Daniel

関連する問題