// SPDX-FileCopyrightText: 2021 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0

plugins {
    id 'application'
    id 'org.asciidoctor.jvm.convert' version '3.3.2'
}

dependencies {
    // JUnit
    testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion"
    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion"

    // Mocking Components
    testImplementation "org.mockito:mockito-core:$mockitoVersion"

    // SOP
    implementation(project(":sop-java"))
    testImplementation(testFixtures(project(":sop-java")))

    // CLI
    implementation "info.picocli:picocli:$picocliVersion"
    annotationProcessor "info.picocli:picocli-codegen:$picocliVersion"

    // @Nonnull, @Nullable...
    implementation "com.google.code.findbugs:jsr305:$jsrVersion"
}

mainClassName = 'sop.cli.picocli.SopCLI'

application {
    mainClass = mainClassName
}

jar {
    dependsOn(":sop-java:jar")
    duplicatesStrategy(DuplicatesStrategy.EXCLUDE)

    manifest {
        attributes 'Main-Class': "$mainClassName"
    }

    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    } {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
    }
}

task generateManpageAsciiDoc(type: JavaExec) {
    dependsOn(classes)
    group = "Documentation"
    description = "Generate AsciiDoc manpage"
    classpath(configurations.annotationProcessor, sourceSets.main.runtimeClasspath)
    systemProperty("user.language", "en")
    main 'picocli.codegen.docgen.manpage.ManPageGenerator'
    args mainClassName, "--outdir=${project.buildDir}/generated-picocli-docs", "-v" //, "--template-dir=src/docs/mantemplates"
}

apply plugin: 'org.asciidoctor.jvm.convert'
asciidoctor {
    attributes 'reproducible': ''
    dependsOn(generateManpageAsciiDoc)
    sourceDir = file("${project.buildDir}/generated-picocli-docs")
    outputDir = file("${project.buildDir}/docs")
    logDocuments = true
    outputOptions {
        backends = ['manpage', 'html5']
    }
}