Skip to content
Snippets Groups Projects
Select Git revision
  • dev default protected
  • main protected
  • feature/better-placeholders
  • 0.3.0
  • 0.2.5
  • 0.2.4
  • 0.2.3
  • 0.2.1
  • 0.2
  • 0.1
10 results

build.gradle

Blame
  • build.gradle 13.39 KiB
    import org.jastadd.relast.plugin.RelastTest
    
    apply plugin: 'java'
    apply plugin: 'jastadd'
    apply plugin: 'application'
    apply plugin: "idea"
    apply plugin: "org.jastadd.relast.plugin"
    
    sourceCompatibility = 1.8
    
    mainClassName = 'org.jastadd.relast.compiler.Compiler'
    
    repositories {
        jcenter()
    }
    
    group = 'org.jastadd'
    apply plugin: 'maven-publish'
    
    buildscript {
        repositories.jcenter()
        dependencies {
            classpath 'org.jastadd:jastaddgradle:1.13.3'
        }
    }
    
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
        testCompile 'org.assertj:assertj-core:3.12.1'
        compile 'com.fasterxml.jackson.core:jackson-core:2.9.8'
        compile 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
        compile 'org.jastadd:jastadd:2.3.4'
        runtime 'org.jastadd:jastadd:2.3.4'
        compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
        compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
        compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
    }
    
    File genSrc = file("src/gen/java")
    File testGenSrc = file("src/test/java-gen")
    sourceSets.main.java.srcDir genSrc
    sourceSets.main.java.srcDir "buildSrc/gen/java"
    sourceSets.test.java.srcDir testGenSrc
    
    idea.module.generatedSourceDirs += genSrc
    idea.module.generatedSourceDirs += testGenSrc
    
    def versionFile = 'src/main/resources/RelASTVersion.properties'
    def oldProps = new Properties()
    
    try {
        file(versionFile).withInputStream { stream -> oldProps.load(stream) }
        version = oldProps['version']
    } catch (ignored) {
        // this happens, if either the properties file is not present, or cannot be read from
        throw new GradleException("File ${versionFile} not found or unreadable. Aborting.")
    }
    
    task newVersion() {
        doFirst {
            def props = new Properties()
            props['version'] = value
            props.store(file(versionFile).newWriter(), null)
        }
    }
    
    jar {
        manifest {
            attributes "Main-Class": 'org.jastadd.relast.compiler.Compiler'
        }
    
        from {
            configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
        }
    
        archiveBaseName = 'relast'
    }
    
    jastadd {
        configureModuleBuild()
        modules {
            //noinspection GroovyAssignabilityCheck
            module("RelAst") {
    
                java {
                    basedir "."
                    include "src/main/**/*.java"
                    include "src/gen/**/*.java"
                }
    
                jastadd {
                    basedir "src/main/jastadd/"
                    include "**/*.ast"
                    include "**/*.jadd"
                    include "**/*.jrag"
                }
    
                scanner {
                    include "src/main/jastadd/RelAst.flex"
                }
    
                parser {
                    include "src/main/jastadd/Preamble.parser"
                    include "src/main/jastadd/RelAst.parser"
                }
            }
        }
    
        cleanGen.doFirst {
            delete "src/gen/java/org"
            delete "src/gen-res/BuildInfo.properties"
        }
    
        preprocessParser.doFirst {
    
            args += ["--no-beaver-symbol"]
    
        }
    
        module = "RelAst"
    
        astPackage = 'org.jastadd.relast.ast'
    
        parser.name = 'RelAstParser'
    
        genDir = 'src/gen/java'
    
        buildInfoDir = 'src/gen-res'
    
        scanner.genDir = "src/gen/java/org/jastadd/relast/scanner"
        parser.genDir = "src/gen/java/org/jastadd/relast/parser"
    
        jastaddOptions = ["--lineColumnNumbers", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
    }
    
    publishing {
        publications {
            maven(MavenPublication) {
                artifact("build/libs/relast-${version}.jar") {
                    extension 'jar'
                }
            }
        }
        repositories {
            maven {
                name 'nexus'
                url "http://172.22.1.152:8081/repository/" + (project.hasProperty('asSnapshot') ? "maven-snapshots" : "maven-releases/")
                credentials {
                    username project.ext.properties.repoUser
                    password project.ext.properties.repoPassword
                }
            }
        }
    }
    
    publish.dependsOn jar
    
    task firstRelationsRun(type: RelastTest) {
        relastFiles 'src/test/jastadd/relations/Relations.relast'
        grammarName = 'src/test/jastadd/relations/Relations'
        useJastAddNames = true
        packageName = 'relations.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd', 'src/test/jastadd/relations/Relations.jrag'
    }
    
    task secondRelationsRun(type: RelastTest, dependsOn: firstRelationsRun) {
        relastFiles 'src/test/jastadd/relations/Relations.ast'
        grammarName = 'src/test/jastadd/relations/Relations2'
        useJastAddNames = true
        packageName = 'ignored'
    
        doLast {
            delete fileTree('src/test/java-gen/ignored')
            delete 'src/test/java-gen/ignored'
        }
    }
    
    task compileConstructorTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/constructors/Constructors.relast'
        grammarName = 'src/test/jastadd/constructors/Constructors'
        packageName = 'constructors.ast'
        moreInputFiles 'src/test/jastadd/constructors/Constructors.jrag'
    }
    
    task compileDefaultNamesTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/relations/Relations.relast'
        grammarName = 'src/test/jastadd/relations/Relations3'
        packageName = 'defaultnames.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd', 'src/test/jastadd/relations/Relations.jrag'
    }
    
    task compileDefaultNamesResolverTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/resolver/Resolver.relast'
        grammarName = 'src/test/jastadd/resolver/Resolver2'
        resolverHelper = true
        packageName = 'defaultnames.resolver.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd',
                       'src/test/jastadd/resolver/ResolverUtils.jadd',
                       'src/test/jastadd/resolver/MyRefResolver.jadd'
    }
    
    task compileLowerBoundsTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/lowerbounds/LowerBounds.relast'
        grammarName = 'src/test/jastadd/lowerbounds/LowerBounds'
        useJastAddNames = true
        packageName = 'lowerbounds.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileMultipleTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/multiple/Part1.relast',
                    'src/test/jastadd/multiple/Part2.relast',
                    'src/test/jastadd/multiple/Part3.relast'
        grammarName = 'src/test/jastadd/multiple/Multiple'
        useJastAddNames = true
        packageName = 'multiple.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileMultipleMixedTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/multiple-mixed/Part1.relast',
                'src/test/jastadd/multiple-mixed/Part2.relast',
                'src/test/jastadd/multiple-mixed/Part3.relast'
        grammarName = 'src/test/jastadd/multiple/Multiple'
        useJastAddNames = true
        packageName = 'mixed.multiple.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileResolverTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/resolver/Resolver.relast'
        grammarName = 'src/test/jastadd/resolver/Resolver'
        useJastAddNames = true
        resolverHelper = true
        packageName = 'resolver.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd',
                'src/test/jastadd/resolver/ResolverUtils.jadd',
                'src/test/jastadd/resolver/MyRefResolver.jadd'
    }
    
    task compileResolver2Test(type: RelastTest) {
        relastFiles 'src/test/jastadd/resolver2/Resolver.relast'
        grammarName = 'src/test/jastadd/resolver2/Resolver'
        useJastAddNames = true
        resolverHelper = true
        packageName = 'resolver2.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd',
                'src/test/jastadd/resolver2/ResolverUtils.jadd',
                'src/test/jastadd/resolver2/MyRefResolver.jadd'
    }
    
    task compileListNamesTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/listnames/ListNames.relast'
        grammarName = 'src/test/jastadd/listnames/ListNames'
        useJastAddNames = true
        jastAddList = 'ListyMcListface'
        listClass = 'java.util.LinkedList'
        packageName = 'listnames.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileSerializerTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/serializer/Serializer.relast'
        grammarName = 'src/test/jastadd/serializer/Serializer'
        useJastAddNames = true
        serializer = 'jackson'
        packageName = 'serializer.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileSerializerDefaultNamesTest(type: RelastTest) {
        relastFiles 'src/test/jastadd/serializer-names/Serializer.relast'
        grammarName = 'src/test/jastadd/serializer-names/Serializer'
        serializer = 'jackson'
        packageName = 'defaultnames.serializer.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileSerializerPointerTest(type: RelastTest) {
        resolverHelper = true
        relastFiles 'src/test/jastadd/serializer-pointer/Serializer.relast'
        grammarName = 'src/test/jastadd/serializer-pointer/Serializer'
        serializer = 'jackson-json-pointer'
        packageName = 'pointer.serializer.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd'
    }
    
    task compileSerializerManualTest(type: RelastTest) {
        resolverHelper = true
        relastFiles 'src/test/jastadd/serializer-manual/Serializer.relast'
        grammarName = 'src/test/jastadd/serializer-manual/Serializer'
        serializer = 'jackson-manual-references'
        packageName = 'manual.serializer.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd', 'src/test/jastadd/serializer-manual/JsonPointer.jrag'
    }
    
    task compileSerializerManualRelativeTest(type: RelastTest) {
        resolverHelper = true
        relastFiles 'src/test/jastadd/serializer-manual-relative/Serializer.relast'
        grammarName = 'src/test/jastadd/serializer-manual-relative/Serializer'
        serializer = 'jackson-manual-references'
        packageName = 'manual.relative.serializer.ast'
        moreInputFiles 'src/test/jastadd/Utils.jadd', 'src/test/jastadd/serializer-manual-relative/JsonPointer.jrag'
    }
    
    task cleanTestGen(type: Delete) {
        group 'verification'
        description 'Cleans all generated test resources'
    
        delete 'src/test/jastadd/serializer-names/Serializer.ast'
        delete 'src/test/jastadd/serializer-names/Serializer.jadd'
        delete 'src/test/jastadd/serializer-names/SerializerSerializer.jadd'
        delete 'src/test/jastadd/serializer-names/SerializerResolverStubs.jrag'
        delete 'src/test/jastadd/serializer-names/SerializerRefResolver.jadd'
        delete 'src/test/jastadd/serializer-manual/Serializer.ast'
        delete 'src/test/jastadd/serializer-manual/Serializer.jadd'
        delete 'src/test/jastadd/serializer-manual/SerializerSerializer.jadd'
        delete 'src/test/jastadd/serializer-manual/SerializerResolverStubs.jrag'
        delete 'src/test/jastadd/serializer-manual/SerializerRefResolver.jadd'
        delete 'src/test/jastadd/resolver2/Resolver.jadd'
        delete 'src/test/jastadd/resolver2/Resolver.ast'
        delete 'src/test/jastadd/resolver2/ResolverRefResolver.jadd'
        delete 'src/test/jastadd/resolver2/ResolverResolverStubs.jrag'
        delete 'src/test/jastadd/serializer-manual-relative/Serializer.ast'
        delete 'src/test/jastadd/serializer-manual-relative/Serializer.jadd'
        delete 'src/test/jastadd/serializer-manual-relative/SerializerSerializer.jadd'
        delete 'src/test/jastadd/serializer-manual-relative/SerializerResolverStubs.jrag'
        delete 'src/test/jastadd/serializer-manual-relative/SerializerRefResolver.jadd'
        delete 'src/test/jastadd/serializer-pointer/Serializer.ast'
        delete 'src/test/jastadd/serializer-pointer/Serializer.jadd'
        delete 'src/test/jastadd/serializer-pointer/SerializerSerializer.jadd'
        delete 'src/test/jastadd/serializer-pointer/SerializerResolverStubs.jrag'
        delete 'src/test/jastadd/serializer-pointer/SerializerRefResolver.jadd'
        delete 'src/test/jastadd/lowerbounds/LowerBounds.jadd'
        delete 'src/test/jastadd/lowerbounds/LowerBounds.ast'
        delete 'src/test/jastadd/resolver/Resolver.jadd'
        delete 'src/test/jastadd/resolver/Resolver.ast'
        delete 'src/test/jastadd/resolver/Resolver2.jadd'
        delete 'src/test/jastadd/resolver/Resolver2.ast'
        delete 'src/test/jastadd/resolver/Resolver2ResolverStubs.jrag'
        delete 'src/test/jastadd/resolver/ResolverRefResolver.jadd'
        delete 'src/test/jastadd/resolver/ResolverResolverStubs.jrag'
        delete 'src/test/jastadd/resolver/Resolver2RefResolver.jadd'
        delete 'src/test/jastadd/errors/Errors.out'
        delete 'src/test/jastadd/errors/Inheritance.out'
        delete 'src/test/jastadd/errors/Multiple.out'
        delete 'src/test/jastadd/errors/InheritanceLeft.out'
        delete 'src/test/jastadd/errors/ErrorsLeft.out'
        delete 'src/test/jastadd/errors/MultipleLeft.out'
        delete 'src/test/jastadd/serializer/Serializer.ast'
        delete 'src/test/jastadd/serializer/Serializer.jadd'
        delete 'src/test/jastadd/serializer/SerializerSerializer.jadd'
        delete 'src/test/jastadd/serializer/SerializerResolverStubs.jrag'
        delete 'src/test/jastadd/serializer/SerializerRefResolver.jadd'
        delete 'src/test/jastadd/listnames/ListNames.jadd'
        delete 'src/test/jastadd/listnames/ListNames.ast'
        delete 'src/test/jastadd/relations/Relations2.jadd'
        delete 'src/test/jastadd/relations/Relations3.ast'
        delete 'src/test/jastadd/relations/Relations2.ast'
        delete 'src/test/jastadd/relations/Relations.ast'
        delete 'src/test/jastadd/relations/Relations.jadd'
        delete 'src/test/jastadd/relations/Relations3.jadd'
        delete 'src/test/jastadd/multiple/Multiple.jadd'
        delete 'src/test/jastadd/multiple/Multiple.ast'
    
        delete fileTree('src/test/java-gen/') {
            exclude '.gitignore'
        }
    }
    
    test {
        outputs.upToDateWhen { false }
        useJUnitPlatform()
        dependsOn cleanTestGen
    }