ModuleReportKoinContext.kt

package com.sebastmar.module.report.internal.di.koin

import com.sebastmar.module.report.internal.Configuration
import com.sebastmar.module.report.internal.TableReport
import com.sebastmar.module.report.internal.di.koin.ModuleReportKoinContext.koin
import com.sebastmar.module.report.internal.di.reportModule
import com.sebastmar.module.report.internal.host.HostType
import org.koin.core.parameter.parametersOf
import org.koin.dsl.koinApplication
import systems.danger.kotlin.models.danger.DangerDSL

internal object ModuleReportKoinContext {

    private val koinApp = koinApplication {
        modules(reportModule())
    }

    internal val koin = koinApp.koin
}

internal fun DangerDSL.getReport(hostType: HostType, configuration: Configuration): TableReport {
    return koin
        .inject<TableReport> { parametersOf(this, hostType, configuration) }
        .value
}