All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cc.catalysts.gradle.plugins.codegen.java.CodegenJavaTask.groovy Maven / Gradle / Ivy

The newest version!
package cc.catalysts.gradle.plugins.codegen.java

import cc.catalysts.gradle.utils.TCLogger
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

import java.text.SimpleDateFormat

/**
 * @author Catalysts GmbH, www.catalysts.cc
 */
class CodegenJavaTask extends DefaultTask {
    private TCLogger log = new TCLogger(project, logger)
    private CodegenJavaExtension codegenJavaExtension = project.codegenjava

    CodegenJavaTask() {
        project.tasks.codegen.dependsOn(this)
        project.tasks.compileJava.dependsOn(this)
    }

    @TaskAction
    def build() {
        def pName = codegenJavaExtension.packageName
        if (pName != null) {
            Calendar calendar = Calendar.getInstance()
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm")
            def date = dateFormat.format(calendar.getTime())
            String version = project.version as String
            if (version.equals("unspecified")) {
                version = project.parent.version
                if (version.equals("unspecified")) {
                    log.warn("project.version is \"unspecified\"")
                }
            }

            File destDir = new File(project.projectDir, codegenJavaExtension.destDir)

            String pathToPackage = destDir.getAbsolutePath() + File.separator + pName.replace('.', File.separator)

            new File(pathToPackage).mkdirs()

            def f = new File(pathToPackage, 'Build.java')
            if (f.exists()) {
                log.lifecycle "Deleting file '${f.getAbsolutePath()}'"
                f.delete()
            }

            log.lifecycle "Writing new file '${f.getAbsolutePath()}'"
            def w = f.newWriter()

            w << 'package ' << pName << ';\r\n'
            w << '\r\npublic class Build {\r\n'
            w << '\tpublic static final String VERSION = "' + version + '";\r\n'
            w << '\tpublic static final String DATE = "' + date + '";\r\n'
            w << '}'

            w.close()

        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy