Skip to content
Snippets Groups Projects
build.gradle 3.48 KiB
apply plugin: 'jastadd'
apply plugin: 'application'
apply plugin: 'jacoco'
apply plugin: 'idea'
apply plugin: 'distribution'

dependencies {
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8'
    compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
    compile group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15'
    compile group: 'org.influxdb', name: 'influxdb-java', version: '2.15'
//    compile project(':feedbackloop.learner')
    testCompile group: 'org.testcontainers', name: 'testcontainers', version: '1.11.2'
    testCompile group: 'org.testcontainers', name: 'influxdb', version: '1.11.2'
    testCompile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.2'
}

buildscript {
    repositories.mavenLocal()
    repositories.mavenCentral()
    dependencies {
        classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.2'
    }
}

run {
    mainClassName = 'de.tudresden.inf.st.eraser.Main'
    standardInput = System.in
    if (project.hasProperty("appArgs")) {
        args Eval.me(appArgs)
    }
}

test {
    testLogging {
        events "passed", "skipped", "failed"
        exceptionFormat "full"
    }
}

jacocoTestReport {
    reports {
        xml.enabled true
        html.enabled false
    }
}

def relastFiles = fileTree('src/main/jastadd/') {
    include '**/*.relast' }.toList().toArray()
String[] relastArguments = [
        "libs/relast.jar",
        "--grammarName=./src/main/jastadd/mainGen",
        "--useJastAddNames",
        "--listClass=RefList",
        "--jastAddList=JastAddList",
        "--file"
]
task preprocess(type: JavaExec) {
    group = 'Build'
    main = "-jar"
    args relastArguments + relastFiles

    inputs.files relastFiles
    outputs.files file("./src/main/jastadd/mainGen.ast"), file("./src/main/jastadd/mainGen.jadd")
}

jastadd {
    configureModuleBuild()
    modules "jastadd_modules"
    module = "eraser"

    extraJastAddOptions = ['--List=JastAddList']

    astPackage = 'de.tudresden.inf.st.eraser.jastadd.model'
    genDir = 'src/gen/java'

    buildInfoDir = 'src/gen-res'
    parser.name = 'EraserParser'

    scanner.genDir = "src/gen/java/de/tudresden/inf/st/eraser/jastadd/scanner"
    parser.genDir = "src/gen/java/de/tudresden/inf/st/eraser/jastadd/parser"
}

idea.module.generatedSourceDirs += file('src/gen/java')

sourceSets.main {
    java {
        srcDir 'src/gen/java'
    }
}

javadoc {
    // this is only run to get the index file etc.
    failOnError = false
}

String[] arguments = ["libs/rd-builder.jar", "-d", "doc/"]
def allSrcFiles = sourceSets.main.allSource.findAll { it.name.endsWith('java') }.toArray()
def ragdocViewSrcData = '../ragdoc-view/src/data/'

task ragdoc(type: JavaExec, dependsOn: assemble, overwrite: true) {
    group = 'documentation'
    description = 'Create ragdoc json documentation files'
    main = "-jar"
    args arguments + allSrcFiles
}

task cleanRagdoc(type: Delete) {
    group = 'documentation'
    delete fileTree(ragdocViewSrcData + '/*')
}

task copyRagdoc(type: Copy, dependsOn: cleanRagdoc) {
    group = 'documentation'
    description = 'Copy ragdoc json documentation files to ragdoc-viewer'
    from 'doc/'
    into ragdocViewSrcData
    eachFile { println it.file }
}

generateAst.dependsOn preprocess
generateAst.inputs.files file("./src/main/jastadd/mainGen.ast"), file("./src/main/jastadd/mainGen.jadd")
//compileJava.dependsOn jastadd
//
//// always run jastadd
//jastadd.outputs.upToDateWhen {false}