CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-jetbrains-kotlin--kotlin-scripting-common

Core interfaces and data structures for Kotlin script compilation, evaluation, and IDE integration

Pending
Overview
Eval results
Files

script-annotations.mddocs/

Script Annotations

Script definition system using annotations to configure script compilation and evaluation behavior. The @KotlinScript annotation serves as the primary mechanism for defining script templates and their associated configurations.

Capabilities

KotlinScript Annotation

Main annotation for defining script templates with compilation, evaluation, and host configurations.

/**
 * Annotation for defining Kotlin script templates
 * @param displayName Human-readable name for the script type
 * @param fileExtension File extension for scripts of this type (default: "kts")
 * @param filePathPattern Pattern for matching script file paths
 * @param compilationConfiguration Class providing compilation configuration
 * @param evaluationConfiguration Class providing evaluation configuration  
 * @param hostConfiguration Class providing host configuration
 */
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScript(
    val displayName: String = "",
    val fileExtension: String = "kts",
    val filePathPattern: String = "",
    val compilationConfiguration: KClass<out ScriptCompilationConfiguration> = ScriptCompilationConfiguration.Default::class,
    val evaluationConfiguration: KClass<out ScriptEvaluationConfiguration> = ScriptEvaluationConfiguration.Default::class,
    val hostConfiguration: KClass<out ScriptingHostConfiguration> = ScriptingHostConfiguration::class
)

Usage Examples:

// Basic script template
@KotlinScript(
    displayName = "Basic Script",
    fileExtension = "basic.kts"
)
abstract class BasicScript

// Advanced script template with custom configurations
@KotlinScript(
    displayName = "Data Processing Script",
    fileExtension = "data.kts",
    filePathPattern = "scripts/data/.*\\.data\\.kts",
    compilationConfiguration = DataScriptCompilationConfiguration::class,
    evaluationConfiguration = DataScriptEvaluationConfiguration::class
)
abstract class DataScript

// Configuration classes referenced by the annotation
class DataScriptCompilationConfiguration : ScriptCompilationConfiguration({
    defaultImports("kotlin.collections.*", "kotlin.io.*")
    dependencies.append(JvmDependency("org.apache.commons:commons-csv:1.9.0"))
})

class DataScriptEvaluationConfiguration : ScriptEvaluationConfiguration({
    contextVariables.put("dataDir", File("./data"))
})

Script Template Definition

Creating script templates involves defining an abstract class annotated with @KotlinScript and providing associated configuration classes.

Template Structure:

// 1. Define the script template class
@KotlinScript(
    displayName = "My Script Type",
    fileExtension = "my.kts",
    compilationConfiguration = MyCompilationConfig::class,
    evaluationConfiguration = MyEvaluationConfig::class
)
abstract class MyScriptTemplate

// 2. Define compilation configuration
class MyCompilationConfig : ScriptCompilationConfiguration({
    // Compilation settings
    defaultImports("kotlin.math.*")
    dependencies.append(JvmDependency("my.library:core:1.0"))
})

// 3. Define evaluation configuration  
class MyEvaluationConfig : ScriptEvaluationConfiguration({
    // Evaluation settings
    contextVariables.put("version", "1.0")
})

File Path Patterns

The filePathPattern property supports regex patterns for matching script files:

@KotlinScript(
    filePathPattern = ".*\\.config\\.kts"  // Matches *.config.kts
)
abstract class ConfigScript

@KotlinScript(
    filePathPattern = "scripts/build/.*\\.build\\.kts"  // Matches build scripts
)
abstract class BuildScript

Configuration Class Requirements

Configuration classes referenced in @KotlinScript must:

  1. Extend the appropriate configuration base class
  2. Provide a no-argument constructor
  3. Use the configuration DSL in their constructor
class CustomCompilationConfig : ScriptCompilationConfiguration({
    // Use configuration DSL here
    defaultImports("my.package.*")
    dependencies {
        append(JvmDependency("group:artifact:version"))
    }
})

Install with Tessl CLI

npx tessl i tessl/maven-org-jetbrains-kotlin--kotlin-scripting-common

docs

error-handling.md

host-integration.md

index.md

repl-system.md

script-annotations.md

script-compilation.md

script-evaluation.md

source-code.md

type-system.md

tile.json