/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    application
    id("com.github.johnrengelman.shadow") version "8.1.1"
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
    testImplementation("org.skyscreamer:jsonassert:1.5.0") // For JSON assertions in tests.
    testImplementation("com.mashape.unirest:unirest-java:1.4.9") // For HTTP requests in tests.
    testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.10.2")

    // implementation("com.google.guava:guava:33.1.0-jre") // Currently not used.
    implementation("com.sparkjava:spark-core:2.9.4")
    implementation("com.fasterxml.jackson.core:jackson-core:2.17.0")
    implementation("com.fasterxml.jackson.core:jackson-databind:2.17.0")

    implementation("org.slf4j:slf4j-simple:2.0.13")
    implementation("org.xerial:sqlite-jdbc:3.45.3.0")
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}

application {
    // Define the main class for the application.
    mainClass.set("krusty.ServerMain")
}

tasks.named<Test>("test") {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}

group = "com.krusty"
version = "1.0"
description = "Krusty"

tasks.named<Jar>("jar") {
    // Make the JAR executable.
    manifest {
        attributes(
            "Main-Class" to "krusty.ServerMain",
            "Implementation-Title" to "KrustyCookiesAPI",
            "Implementation-Version" to version
        )
    }
}