Skip to content

Commit de97dc3

Browse files
authored
Add custom print function to ConfigLoaderBuilder (#367)
1 parent f6843a3 commit de97dc3

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

hoplite-core/src/main/kotlin/com/sksamuel/hoplite/ConfigLoader.kt

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.sksamuel.hoplite.internal.ConfigParser
1111
import com.sksamuel.hoplite.internal.DecodeMode
1212
import com.sksamuel.hoplite.parsers.ParserRegistry
1313
import com.sksamuel.hoplite.preprocessor.Preprocessor
14+
import com.sksamuel.hoplite.report.Print
1415
import com.sksamuel.hoplite.secrets.Obfuscator
1516
import com.sksamuel.hoplite.secrets.PrefixObfuscator
1617
import com.sksamuel.hoplite.secrets.SecretsPolicy
@@ -36,6 +37,7 @@ class ConfigLoader(
3637
val secretsPolicy: SecretsPolicy? = null,
3738
val environment: Environment? = null,
3839
val obfuscator: Obfuscator? = null,
40+
val reportPrintFn: Print? = null,
3941
val flattenArraysToString: Boolean = false,
4042
) {
4143

@@ -155,6 +157,7 @@ class ConfigLoader(
155157
decodeMode = decodeMode,
156158
useReport = useReport,
157159
obfuscator = obfuscator ?: PrefixObfuscator(3),
160+
reportPrintFn = reportPrintFn ?: { println(it) },
158161
environment = environment,
159162
).decode(kclass, environment, resourceOrFiles, propertySources, configSources)
160163
}
@@ -204,6 +207,7 @@ class ConfigLoader(
204207
decodeMode = DecodeMode.Lenient, // not used when loading nodes
205208
useReport = false, // not used when loading nodes
206209
obfuscator = StrictObfuscator("*"), // not used when loading nodes
210+
reportPrintFn = reportPrintFn ?: { }, // not used when loading nodes
207211
environment = environment,
208212
).load(resourceOrFiles, propertySources, configSources)
209213
}

hoplite-core/src/main/kotlin/com/sksamuel/hoplite/ConfigLoaderBuilder.kt

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.sksamuel.hoplite.preprocessor.EnvOrSystemPropertyPreprocessor
1111
import com.sksamuel.hoplite.preprocessor.LookupPreprocessor
1212
import com.sksamuel.hoplite.preprocessor.Preprocessor
1313
import com.sksamuel.hoplite.preprocessor.RandomPreprocessor
14+
import com.sksamuel.hoplite.report.Print
1415
import com.sksamuel.hoplite.report.Reporter
1516
import com.sksamuel.hoplite.secrets.AllStringNodesSecretsPolicy
1617
import com.sksamuel.hoplite.secrets.Obfuscator
@@ -42,6 +43,7 @@ class ConfigLoaderBuilder private constructor() {
4243
private val decoders = mutableListOf<Decoder<*>>()
4344

4445
private var useReport: Boolean = false
46+
private var reportPrintFn: Print = { println(it) }
4547
private var secretsPolicy: SecretsPolicy = AllStringNodesSecretsPolicy
4648
private var obfuscator: Obfuscator = PrefixObfuscator(3)
4749
private var preprocessingIterations: Int = 1
@@ -221,6 +223,8 @@ class ConfigLoaderBuilder private constructor() {
221223
fun withObfusctator(obfuscator: Obfuscator): ConfigLoaderBuilder = withObfuscator(obfuscator)
222224
fun withObfuscator(obfuscator: Obfuscator): ConfigLoaderBuilder = apply { this.obfuscator = obfuscator }
223225

226+
fun withReportPrintFn(reportPrintFn: (String) -> Unit): ConfigLoaderBuilder = apply { this.reportPrintFn = reportPrintFn }
227+
224228
@ExperimentalHoplite
225229
fun withSecretsPolicy(secretsPolicy: SecretsPolicy) = apply { this.secretsPolicy = secretsPolicy }
226230

@@ -262,6 +266,7 @@ class ConfigLoaderBuilder private constructor() {
262266
secretsPolicy = secretsPolicy,
263267
environment = environment,
264268
obfuscator = obfuscator,
269+
reportPrintFn = reportPrintFn,
265270
flattenArraysToString = flattenArraysToString,
266271
)
267272
}

hoplite-core/src/main/kotlin/com/sksamuel/hoplite/internal/ConfigParser.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.sksamuel.hoplite.fp.invalid
1616
import com.sksamuel.hoplite.fp.valid
1717
import com.sksamuel.hoplite.parsers.ParserRegistry
1818
import com.sksamuel.hoplite.preprocessor.Preprocessor
19+
import com.sksamuel.hoplite.report.Print
1920
import com.sksamuel.hoplite.report.Reporter
2021
import com.sksamuel.hoplite.secrets.Obfuscator
2122
import com.sksamuel.hoplite.secrets.SecretsPolicy
@@ -36,6 +37,7 @@ class ConfigParser(
3637
private val decodeMode: DecodeMode,
3738
private val useReport: Boolean,
3839
private val obfuscator: Obfuscator,
40+
private val reportPrintFn: Print,
3941
private val environment: Environment?,
4042
) {
4143

@@ -73,7 +75,7 @@ class ConfigParser(
7375

7476
// always do report regardless of decoder result
7577
if (useReport) {
76-
Reporter({ println(it) }, obfuscator, environment)
78+
Reporter(reportPrintFn, obfuscator, environment)
7779
.printReport(propertySources, state, context.reports)
7880
}
7981

0 commit comments

Comments
 (0)