diff src/main/groovy/org/ssdt_ohio/gradle/plugins/UserDocPlugin.groovy @ 13:a628135958e7

USASR-1307: inititial userdoc plugin/task to produce customizable groovy doc
author Dave Smith <smith@nwoca.org>
date Tue, 10 Dec 2013 22:53:57 +0000
parents
children e3c55e83c9a4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/groovy/org/ssdt_ohio/gradle/plugins/UserDocPlugin.groovy	Tue Dec 10 22:53:57 2013 +0000
@@ -0,0 +1,48 @@
+package org.ssdt_ohio.gradle.plugins
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.internal.plugins.DslObject
+import org.gradle.api.plugins.GroovyPlugin
+import org.gradle.api.plugins.JavaBasePlugin
+import org.gradle.api.plugins.JavaPluginConvention
+import org.gradle.api.tasks.GroovyRuntime
+import org.gradle.api.tasks.GroovySourceSet
+import org.gradle.api.tasks.SourceSet
+import org.ssdt_ohio.gradle.tasks.UserDoc
+
+
+class UserDocPlugin implements Plugin<Project> {
+
+
+    private static final String USERDOC_TASK_NAME = 'userdoc'
+
+    @Override
+    void apply(Project project) {
+
+        project.getPlugins().apply(GroovyPlugin.class)
+        configureUserdoc(project)
+
+    }
+
+    private void configureUserdoc(final Project project) {
+        UserDoc userDoc = project.getTasks().create(USERDOC_TASK_NAME, UserDoc.class);
+        userDoc.setDescription("Generates UserDoc API documentation for the main source code.");
+        userDoc.setGroup(JavaBasePlugin.DOCUMENTATION_GROUP);
+
+        JavaPluginConvention convention = project.getConvention().getPlugin(JavaPluginConvention.class);
+        SourceSet sourceSet = convention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
+        userDoc.setClasspath(sourceSet.getOutput().plus(sourceSet.getCompileClasspath()))
+
+
+        GroovySourceSet groovySourceSet = new DslObject(sourceSet).getConvention().getPlugin(GroovySourceSet.class);
+        println "srcdirs: " + groovySourceSet.getGroovy().getSrcDirs()
+        userDoc.setSource(groovySourceSet.getGroovy());
+
+        userDoc.setDestinationDir(new File(project.buildDir, "docs/userdoc"))
+
+        userDoc.setGroovyClasspath(new GroovyRuntime(project).inferGroovyClasspath(project.configurations.compile))
+
+    }
+
+}