mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-02-22 22:36:34 +01:00
Add DatadirUtil to centralize logic for finding our actual datadir (#3171)
This commit is contained in:
parent
f8d5202974
commit
4146876369
3 changed files with 60 additions and 53 deletions
|
@ -1,11 +1,11 @@
|
|||
package org.bitcoins.bundle.gui
|
||||
|
||||
import com.typesafe.config.Config
|
||||
import org.bitcoins.core.config._
|
||||
import org.bitcoins.db.AppConfig
|
||||
import org.bitcoins.db.AppConfig.DEFAULT_BITCOIN_S_DATADIR
|
||||
import org.bitcoins.gui._
|
||||
import org.bitcoins.gui.util.GUIUtil
|
||||
import org.bitcoins.server.util.DatadirUtil
|
||||
import scalafx.application.{JFXApp, Platform}
|
||||
import scalafx.geometry.Pos
|
||||
import scalafx.scene.Scene
|
||||
|
@ -41,30 +41,7 @@ object BundleGUI extends WalletGUI with JFXApp {
|
|||
val datadir: Path =
|
||||
Paths.get(baseConfig.getString("bitcoin-s.datadir"))
|
||||
|
||||
val networkStr: String =
|
||||
baseConfig.getString("bitcoin-s.network")
|
||||
|
||||
val network: BitcoinNetwork = networkStr.toLowerCase match {
|
||||
case "mainnet" => MainNet
|
||||
case "main" => MainNet
|
||||
case "testnet3" => TestNet3
|
||||
case "testnet" => TestNet3
|
||||
case "test" => TestNet3
|
||||
case "regtest" => RegTest
|
||||
case "signet" => SigNet
|
||||
case "sig" => SigNet
|
||||
case _: String =>
|
||||
throw new IllegalArgumentException(s"Invalid network $networkStr")
|
||||
}
|
||||
|
||||
val lastDirname = network match {
|
||||
case MainNet => "mainnet"
|
||||
case TestNet3 => "testnet3"
|
||||
case RegTest => "regtest"
|
||||
case SigNet => "signet"
|
||||
}
|
||||
|
||||
val usedDir = datadir.resolve(lastDirname)
|
||||
val usedDir = DatadirUtil.getFinalDatadir(datadir, baseConfig, None)
|
||||
|
||||
System.setProperty("bitcoins.log.location", usedDir.toAbsolutePath.toString)
|
||||
}
|
||||
|
|
|
@ -3,10 +3,10 @@ package org.bitcoins.server.routes
|
|||
import akka.actor.ActorSystem
|
||||
import com.typesafe.config.{Config, ConfigFactory}
|
||||
import grizzled.slf4j.Logging
|
||||
import org.bitcoins.core.config._
|
||||
import org.bitcoins.core.util.{EnvUtil, StartStopAsync}
|
||||
import org.bitcoins.db.AppConfig
|
||||
import org.bitcoins.db.AppConfig.safePathToString
|
||||
import org.bitcoins.server.util.DatadirUtil
|
||||
|
||||
import java.nio.file.{Path, Paths}
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
@ -92,33 +92,8 @@ trait BitcoinSRunner extends StartStopAsync[Unit] with Logging {
|
|||
final def run(customFinalDirOpt: Option[String] = None): Unit = {
|
||||
|
||||
/** Directory specific for current network or custom dir */
|
||||
val usedDir: Path = customFinalDirOpt match {
|
||||
case Some(dir) => datadir.resolve(dir)
|
||||
case None =>
|
||||
val networkStr: String =
|
||||
baseConfig.getString("bitcoin-s.network")
|
||||
|
||||
val network: BitcoinNetwork = networkStr.toLowerCase match {
|
||||
case "mainnet" => MainNet
|
||||
case "main" => MainNet
|
||||
case "testnet3" => TestNet3
|
||||
case "testnet" => TestNet3
|
||||
case "test" => TestNet3
|
||||
case "regtest" => RegTest
|
||||
case "signet" => SigNet
|
||||
case "sig" => SigNet
|
||||
case _: String =>
|
||||
throw new IllegalArgumentException(s"Invalid network $networkStr")
|
||||
}
|
||||
|
||||
val lastDirname = network match {
|
||||
case MainNet => "mainnet"
|
||||
case TestNet3 => "testnet3"
|
||||
case RegTest => "regtest"
|
||||
case SigNet => "signet"
|
||||
}
|
||||
datadir.resolve(lastDirname)
|
||||
}
|
||||
val usedDir: Path =
|
||||
DatadirUtil.getFinalDatadir(datadir, baseConfig, customFinalDirOpt)
|
||||
|
||||
//We need to set the system property before any logger instances
|
||||
//are in instantiated. If we don't do this, we will not log to
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
package org.bitcoins.server.util
|
||||
|
||||
import com.typesafe.config.Config
|
||||
import org.bitcoins.core.config.{
|
||||
BitcoinNetwork,
|
||||
MainNet,
|
||||
RegTest,
|
||||
SigNet,
|
||||
TestNet3
|
||||
}
|
||||
|
||||
import java.nio.file.Path
|
||||
|
||||
object DatadirUtil {
|
||||
|
||||
/** Sets the final datadir for our applicatoin.
|
||||
* We allow useres to pass in a --datadir command line
|
||||
* flag that needs to be used instead of the [[datadir]]
|
||||
* specified in bitcoin-s.conf
|
||||
*/
|
||||
def getFinalDatadir(
|
||||
datadir: Path,
|
||||
baseConfig: Config,
|
||||
customFinalDirOpt: Option[String] = None): Path = {
|
||||
val usedDir: Path = customFinalDirOpt match {
|
||||
case Some(dir) => datadir.resolve(dir)
|
||||
case None =>
|
||||
val networkStr: String =
|
||||
baseConfig.getString("bitcoin-s.network")
|
||||
|
||||
val network: BitcoinNetwork = networkStr.toLowerCase match {
|
||||
case "mainnet" => MainNet
|
||||
case "main" => MainNet
|
||||
case "testnet3" => TestNet3
|
||||
case "testnet" => TestNet3
|
||||
case "test" => TestNet3
|
||||
case "regtest" => RegTest
|
||||
case "signet" => SigNet
|
||||
case "sig" => SigNet
|
||||
case _: String =>
|
||||
throw new IllegalArgumentException(s"Invalid network $networkStr")
|
||||
}
|
||||
|
||||
val lastDirname = network match {
|
||||
case MainNet => "mainnet"
|
||||
case TestNet3 => "testnet3"
|
||||
case RegTest => "regtest"
|
||||
case SigNet => "signet"
|
||||
}
|
||||
datadir.resolve(lastDirname)
|
||||
}
|
||||
|
||||
usedDir
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue