comparison 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
comparison
equal deleted inserted replaced
12:0a2819478262 13:a628135958e7
1 package org.ssdt_ohio.gradle.plugins
2
3 import org.gradle.api.Plugin
4 import org.gradle.api.Project
5 import org.gradle.api.internal.plugins.DslObject
6 import org.gradle.api.plugins.GroovyPlugin
7 import org.gradle.api.plugins.JavaBasePlugin
8 import org.gradle.api.plugins.JavaPluginConvention
9 import org.gradle.api.tasks.GroovyRuntime
10 import org.gradle.api.tasks.GroovySourceSet
11 import org.gradle.api.tasks.SourceSet
12 import org.ssdt_ohio.gradle.tasks.UserDoc
13
14
15 class UserDocPlugin implements Plugin<Project> {
16
17
18 private static final String USERDOC_TASK_NAME = 'userdoc'
19
20 @Override
21 void apply(Project project) {
22
23 project.getPlugins().apply(GroovyPlugin.class)
24 configureUserdoc(project)
25
26 }
27
28 private void configureUserdoc(final Project project) {
29 UserDoc userDoc = project.getTasks().create(USERDOC_TASK_NAME, UserDoc.class);
30 userDoc.setDescription("Generates UserDoc API documentation for the main source code.");
31 userDoc.setGroup(JavaBasePlugin.DOCUMENTATION_GROUP);
32
33 JavaPluginConvention convention = project.getConvention().getPlugin(JavaPluginConvention.class);
34 SourceSet sourceSet = convention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
35 userDoc.setClasspath(sourceSet.getOutput().plus(sourceSet.getCompileClasspath()))
36
37
38 GroovySourceSet groovySourceSet = new DslObject(sourceSet).getConvention().getPlugin(GroovySourceSet.class);
39 println "srcdirs: " + groovySourceSet.getGroovy().getSrcDirs()
40 userDoc.setSource(groovySourceSet.getGroovy());
41
42 userDoc.setDestinationDir(new File(project.buildDir, "docs/userdoc"))
43
44 userDoc.setGroovyClasspath(new GroovyRuntime(project).inferGroovyClasspath(project.configurations.compile))
45
46 }
47
48 }