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

com.selesse.gradle.git.changelog.GitLogPlugin.groovy Maven / Gradle / Ivy

There is a newer version: 0.3.0
Show newest version
package com.selesse.gradle.git.changelog
import com.selesse.gradle.git.changelog.tasks.GenerateChangelogTask
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
import org.gradle.api.plugins.BasePlugin
import org.gradle.api.plugins.JavaPlugin

class GitLogPlugin implements Plugin {
    Logger logger = Logging.getLogger(GitLogPlugin)
    private GitChangelogExtension extension

    @Override
    void apply(Project project) {
        applyPluginDependency(project)

        extension = project.extensions.create("changelog", GitChangelogExtension)

        extension.with {
            title = project.name
            outputDirectory = project.buildDir
        }

        logger.info("Initialized with settings: ${extension}")
    }

    def applyPluginDependency(Project project) {
        GenerateChangelogTask task = project.tasks.create("generateChangelog", GenerateChangelogTask)

        project.afterEvaluate {
            project.plugins.withType(JavaPlugin) {
                logger.info("Configuring Java plugin")
                Task processResources = project.tasks.processResources
                if (processResources != null) {
                    logger.debug("Making assembleTask depend on ${task.name}")
                    processResources.dependsOn(task)

                    logger.debug("Setting destination directory to {}", processResources.destinationDir)
                    project.extensions.changelog.outputDirectory = processResources.destinationDir
                }
            }

            if (project.plugins.findPlugin(JavaPlugin) == null) {
                project.plugins.withType(BasePlugin) {
                    logger.debug("Configuring Base Plugin")
                    Task assembleTask = project.tasks.getByName("assemble") as Task
                    if (assembleTask != null) {
                        logger.debug("Making assembleTask depend on ${task.name}")
                        assembleTask.dependsOn(task)
                    }
                }
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy