All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.jupyter.dependencies.ScriptDependencyAnnotationHandlerImpl.kt Maven / Gradle / Ivy

There is a newer version: 0.12.0-356
Show newest version
package org.jetbrains.kotlinx.jupyter.dependencies

import java.io.File
import kotlin.script.dependencies.ScriptContents
import kotlin.script.experimental.api.ResultWithDiagnostics
import kotlin.script.experimental.api.ScriptCompilationConfiguration
import kotlin.script.experimental.api.asSuccess
import kotlin.script.experimental.api.onSuccess
import kotlin.script.experimental.jvm.withUpdatedClasspath

open class ScriptDependencyAnnotationHandlerImpl(private val resolver: JupyterScriptDependenciesResolver) :
    ScriptDependencyAnnotationHandler {
    override fun configure(
        configuration: ScriptCompilationConfiguration,
        annotations: List,
    ): ResultWithDiagnostics {
        if (annotations.isEmpty()) return configuration.asSuccess()
        val scriptContents =
            object : ScriptContents {
                override val annotations: Iterable = annotations
                override val file: File? = null
                override val text: CharSequence? = null
            }
        return resolver.resolveFromAnnotations(scriptContents)
            .onSuccess { classpath ->
                onResolvedClasspath(configuration, classpath).asSuccess()
            }
    }

    protected open fun onResolvedClasspath(
        configuration: ScriptCompilationConfiguration,
        classpath: List,
    ): ScriptCompilationConfiguration {
        return configuration
            .let { if (classpath.isEmpty()) it else it.withUpdatedClasspath(classpath) }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy