optionnally set datadir with env var

ex: `PHOENIX_DATADIR=/my/phoenix/dir ./phoenixd`
This commit is contained in:
pm47 2024-03-24 23:32:34 +01:00
parent 029bd7c162
commit 0432da38e5
No known key found for this signature in database
GPG Key ID: E434ED292E85643A
6 changed files with 14 additions and 8 deletions

View File

@ -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

View File

@ -68,8 +68,6 @@ fun main(args: Array<String>) = 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

View File

@ -0,0 +1,5 @@
package fr.acinq.lightning.bin.conf
object EnvVars {
const val PHOENIX_DATADIR = "PHOENIX_DATADIR"
}

View File

@ -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<String>) =
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")

View File

@ -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"

View File

@ -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",