diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/Expects.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/Expects.kt index c28c9d8..2768024 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/bin/Expects.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/Expects.kt @@ -5,6 +5,6 @@ import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.PublicKey import okio.Path -expect val homeDirectory: Path +expect val datadir: Path expect fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt index 4126ada..8a6bdc7 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt @@ -68,8 +68,6 @@ fun main(args: Array) = Phoenixd() .main(args) class Phoenixd : CliktCommand() { - //private val datadir by option("--datadir", help = "Data directory").convert { it.toPath() }.default(homeDirectory / ".phoenix", defaultForHelp = "~/.phoenix") - private val datadir = homeDirectory / ".phoenix" private val confFile = datadir / "phoenix.conf" private val chain by option("--chain", help = "Bitcoin chain to use").choice( "mainnet" to Chain.Mainnet, "testnet" to Chain.Testnet diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/conf/EnvVars.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/conf/EnvVars.kt new file mode 100644 index 0000000..ef6e0c0 --- /dev/null +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/conf/EnvVars.kt @@ -0,0 +1,5 @@ +package fr.acinq.lightning.bin.conf + +object EnvVars { + const val PHOENIX_DATADIR = "PHOENIX_DATADIR" +} \ No newline at end of file diff --git a/src/commonMain/kotlin/fr/acinq/lightning/cli/PhoenixCli.kt b/src/commonMain/kotlin/fr/acinq/lightning/cli/PhoenixCli.kt index 822c2d0..f48a3fe 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/cli/PhoenixCli.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/cli/PhoenixCli.kt @@ -14,7 +14,7 @@ import fr.acinq.bitcoin.Bech32 import fr.acinq.bitcoin.ByteVector32 import fr.acinq.lightning.BuildVersions import fr.acinq.lightning.bin.conf.readConfFile -import fr.acinq.lightning.bin.homeDirectory +import fr.acinq.lightning.bin.datadir import fr.acinq.lightning.payment.Bolt11Invoice import fr.acinq.lightning.utils.UUID import io.ktor.client.* @@ -40,7 +40,6 @@ fun main(args: Array) = data class HttpConf(val baseUrl: Url, val httpClient: HttpClient) class PhoenixCli : CliktCommand() { - private val datadir = homeDirectory / ".phoenix" private val confFile = datadir / "phoenix.conf" private val httpBindIp by option("--http-bind-ip", help = "Bind ip for the http api").default("127.0.0.1") @@ -110,7 +109,7 @@ class GetBalance : PhoenixCliCommand(name = "getbalance", help = "Returns your c } class ListChannels : PhoenixCliCommand(name = "listchannels", help = "List all channels") { - override suspend fun httpRequest() = commonOptions.httpClient.get( + override suspend fun httpRequest() = commonOptions.httpClient.get( url = commonOptions.baseUrl / "listchannels" ) } diff --git a/src/jvmMain/kotlin/fr/acinq/lightning/bin/Actuals.kt b/src/jvmMain/kotlin/fr/acinq/lightning/bin/Actuals.kt index b9ddbfd..1e5d8d3 100644 --- a/src/jvmMain/kotlin/fr/acinq/lightning/bin/Actuals.kt +++ b/src/jvmMain/kotlin/fr/acinq/lightning/bin/Actuals.kt @@ -4,11 +4,12 @@ import app.cash.sqldelight.db.SqlDriver import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.PublicKey +import fr.acinq.lightning.bin.conf.EnvVars.PHOENIX_DATADIR import fr.acinq.phoenix.db.PhoenixDatabase import okio.Path import okio.Path.Companion.toPath -actual val homeDirectory: Path = System.getProperty("user.home").toPath() +actual val datadir: Path = (System.getenv()[PHOENIX_DATADIR]?.toPath() ?: System.getProperty("user.home").toPath().div(".phoenix")) actual fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver { val path = dir / "phoenix.${chain.name.lowercase()}.${nodeId.toHex().take(6)}.db" diff --git a/src/nativeMain/kotlin/fr/acinq/lightning/bin/Actuals.kt b/src/nativeMain/kotlin/fr/acinq/lightning/bin/Actuals.kt index 56bb503..e37835d 100644 --- a/src/nativeMain/kotlin/fr/acinq/lightning/bin/Actuals.kt +++ b/src/nativeMain/kotlin/fr/acinq/lightning/bin/Actuals.kt @@ -2,6 +2,7 @@ package fr.acinq.lightning.bin import app.cash.sqldelight.db.SqlDriver import app.cash.sqldelight.driver.native.NativeSqliteDriver +import fr.acinq.lightning.bin.conf.EnvVars.PHOENIX_DATADIR import fr.acinq.phoenix.db.PhoenixDatabase import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.PublicKey @@ -13,7 +14,9 @@ import platform.posix.getenv import platform.posix.setenv @OptIn(ExperimentalForeignApi::class) -actual val homeDirectory: Path = setenv("KTOR_LOG_LEVEL", "WARN", 1).let { getenv("HOME")?.toKString()!!.toPath() } +actual val datadir: Path = setenv("KTOR_LOG_LEVEL", "WARN", 1) + .let { + getenv(PHOENIX_DATADIR)?.toKString()?.toPath() ?: getenv("HOME")?.toKString()!!.toPath().div(".phoenix") } actual fun createAppDbDriver(dir: Path, chain: Chain, nodeId: PublicKey): SqlDriver { return NativeSqliteDriver(PhoenixDatabase.Schema, "phoenix.${chain.name.lowercase()}.${nodeId.toHex().take(6)}.db",