plugins {
    id 'java'
    id "io.freefair.lombok" version "5.3.3.3"
    id 'application'
    id 'jvm-test-suite'
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(17))
    }
}

application {
    mainClass = 'nu.marginalia.converting.ConverterMain'
    applicationName = 'converter-process'
}

tasks.distZip.enabled = false

dependencies {
    implementation project(':code:common:process')

    implementation project(':third-party:porterstemmer')
    implementation project(':third-party:count-min-sketch')
    implementation project(':code:api:index-api')

    implementation project(':code:common:model')
    implementation project(':code:common:service')
    implementation project(':code:common:config')
    implementation project(':code:common:service-discovery')
    implementation project(':code:common:service-client')

    implementation project(':code:libraries:guarded-regex')
    implementation project(':code:libraries:easy-lsh')
    implementation project(':code:libraries:big-string')
    implementation project(':code:libraries:language-processing')

    implementation project(':code:process-models:converting-model')
    implementation project(':code:process-models:crawling-model')

    implementation project(':code:features-convert:adblock')
    implementation project(':code:features-convert:topic-detection')
    implementation project(':code:features-convert:pubdate')
    implementation project(':code:features-convert:keyword-extraction')
    implementation project(':code:features-convert:summary-extraction')

    implementation project(':code:features-crawl:crawl-blocklist')
    implementation project(':code:features-crawl:link-parser')

    testImplementation project(':code:libraries:term-frequency-dict')

    implementation libs.lombok
    annotationProcessor libs.lombok
    implementation libs.bundles.slf4j

    implementation libs.notnull

    implementation libs.jsoup

    implementation libs.guice
    implementation libs.guava
    implementation libs.bundles.gson

    implementation libs.zstd

    implementation libs.bundles.mariadb

    implementation libs.trove
    implementation libs.fastutil

    implementation libs.crawlercommons

    implementation libs.commons.lang3

    testImplementation libs.bundles.slf4j.test
    testImplementation libs.bundles.junit
    testImplementation libs.mockito
}

test {
    maxHeapSize = "8G"
    useJUnitPlatform()
}

task fastTests(type: Test) {
    useJUnitPlatform {
        excludeTags "slow"
    }
}
