mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-03-03 10:46:42 +01:00
Create fromConfig functions for AppConfigs (#2170)
* Create fromConfig functions for AppConfigs * Add fromClassPathConfig function
This commit is contained in:
parent
3bd8764fa8
commit
128ff7de54
4 changed files with 62 additions and 6 deletions
|
@ -1,6 +1,6 @@
|
|||
package org.bitcoins.server
|
||||
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.{Path, Paths}
|
||||
|
||||
import com.typesafe.config.{Config, ConfigFactory}
|
||||
import org.bitcoins.chain.config.ChainAppConfig
|
||||
|
@ -81,6 +81,17 @@ case class BitcoinSAppConfig(
|
|||
*/
|
||||
object BitcoinSAppConfig {
|
||||
|
||||
def fromConfig(config: Config)(implicit
|
||||
ec: ExecutionContext): BitcoinSAppConfig = {
|
||||
val configDataDir: Path = Paths.get(config.getString("bitcoin-s.datadir"))
|
||||
BitcoinSAppConfig(configDataDir, config)
|
||||
}
|
||||
|
||||
def fromClassPathConfig()(implicit
|
||||
ec: ExecutionContext): BitcoinSAppConfig = {
|
||||
fromConfig(ConfigFactory.load())
|
||||
}
|
||||
|
||||
/** Constructs an app configuration from the default Bitcoin-S
|
||||
* data directory and given list of configuration overrides.
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package org.bitcoins.db
|
||||
|
||||
import com.typesafe.config.ConfigFactory
|
||||
import org.bitcoins.core.config.TestNet3
|
||||
import org.bitcoins.core.config._
|
||||
import org.bitcoins.dlc.oracle.DLCOracleAppConfig
|
||||
import org.bitcoins.server.BitcoinSAppConfig
|
||||
import org.bitcoins.testkit.BitcoinSTestAppConfig
|
||||
import org.bitcoins.testkit.util.BitcoinSAsyncTest
|
||||
import org.bitcoins.wallet.config.WalletAppConfig
|
||||
|
@ -46,6 +48,33 @@ class AppConfigTest extends BitcoinSAsyncTest {
|
|||
assert(walletConf.dbName != nodeConf.dbName)
|
||||
}
|
||||
|
||||
it must "create from config" in {
|
||||
val dir = BitcoinSTestAppConfig.tmpDir().toAbsolutePath
|
||||
val conf = ConfigFactory.parseString {
|
||||
s"""
|
||||
|bitcoin-s {
|
||||
| datadir = $dir
|
||||
|}
|
||||
""".stripMargin
|
||||
}
|
||||
|
||||
val appConfig = BitcoinSAppConfig.fromConfig(conf)
|
||||
assert(appConfig.walletConf.baseDatadir == dir)
|
||||
assert(appConfig.nodeConf.baseDatadir == dir)
|
||||
assert(appConfig.chainConf.baseDatadir == dir)
|
||||
assert(appConfig.bitcoindRpcConf.baseDatadir == dir)
|
||||
|
||||
val dlcOracleAppConfig = DLCOracleAppConfig.fromConfig(conf)
|
||||
assert(dlcOracleAppConfig.baseDatadir == dir)
|
||||
}
|
||||
|
||||
it must "create from class path config" in {
|
||||
val appConfig = BitcoinSAppConfig.fromClassPathConfig()
|
||||
assert(appConfig.nodeConf.network == RegTest)
|
||||
assert(appConfig.walletConf.requiredConfirmations == 6)
|
||||
assert(!appConfig.chainConf.forceRecalcChainWork)
|
||||
}
|
||||
|
||||
it must "fill in typesafe config variables correctly" in {
|
||||
val datadir = BitcoinSTestAppConfig.tmpDir()
|
||||
val walletAppConfig = WalletAppConfig(datadir)
|
||||
|
|
|
@ -1,13 +1,22 @@
|
|||
package org.bitcoins.db
|
||||
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.{Path, Paths}
|
||||
|
||||
import com.typesafe.config.Config
|
||||
import com.typesafe.config.{Config, ConfigFactory}
|
||||
|
||||
import scala.concurrent.ExecutionContext
|
||||
|
||||
trait AppConfigFactory[C <: AppConfig] {
|
||||
|
||||
def fromConfig(config: Config)(implicit ec: ExecutionContext): C = {
|
||||
val configDataDir: Path = Paths.get(config.getString("bitcoin-s.datadir"))
|
||||
fromDatadir(configDataDir, Vector(config))
|
||||
}
|
||||
|
||||
def fromClassPathConfig()(implicit ec: ExecutionContext): C = {
|
||||
fromConfig(ConfigFactory.load())
|
||||
}
|
||||
|
||||
def fromDefaultDatadir(confs: Vector[Config] = Vector.empty)(implicit
|
||||
ec: ExecutionContext): C = {
|
||||
fromDatadir(AppConfig.DEFAULT_BITCOIN_S_DATADIR, confs)
|
||||
|
|
|
@ -6,10 +6,10 @@ import com.typesafe.config.Config
|
|||
import org.bitcoins.core.config.NetworkParameters
|
||||
import org.bitcoins.core.crypto.ExtKeyVersion.SegWitMainNetPriv
|
||||
import org.bitcoins.core.crypto.MnemonicCode
|
||||
import org.bitcoins.core.util.{TimeUtil}
|
||||
import org.bitcoins.core.util.TimeUtil
|
||||
import org.bitcoins.crypto.AesPassword
|
||||
import org.bitcoins.db.DatabaseDriver._
|
||||
import org.bitcoins.db.{AppConfig, DbManagement, JdbcProfileComponent}
|
||||
import org.bitcoins.db._
|
||||
import org.bitcoins.dlc.oracle.storage._
|
||||
import org.bitcoins.keymanager.{DecryptedMnemonic, WalletStorage}
|
||||
|
||||
|
@ -123,3 +123,10 @@ case class DLCOracleAppConfig(
|
|||
override def allTables: List[TableQuery[Table[_]]] =
|
||||
List(rValueTable, eventTable, eventOutcomeTable)
|
||||
}
|
||||
|
||||
object DLCOracleAppConfig extends AppConfigFactory[DLCOracleAppConfig] {
|
||||
|
||||
override def fromDatadir(datadir: Path, confs: Vector[Config])(implicit
|
||||
ec: ExecutionContext): DLCOracleAppConfig =
|
||||
DLCOracleAppConfig(datadir, confs: _*)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue