PageRenderTime 67ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/atlassian-docco-maven/src/main/java/DoccoMojo.java

https://bitbucket.org/Arnauld/atlassian-docco
Java | 146 lines | 113 code | 32 blank | 1 comment | 22 complexity | 51b5b0afc13545def6969502f412276d MD5 | raw file
  1. import java.io.File;
  2. import java.util.Arrays;
  3. import com.atlassian.docco.DoccoBatch;
  4. import com.atlassian.docco.builder.DoccoBatchBuilder;
  5. import com.atlassian.docco.mapping.DoccoCommentPatterns;
  6. import com.atlassian.docco.mapping.DoccoCommentPatternsBuilder;
  7. import com.atlassian.docco.mapping.DoccoFileMapping;
  8. import com.atlassian.docco.mapping.DoccoFileMappingManager;
  9. import org.apache.commons.lang.StringUtils;
  10. import org.apache.maven.plugin.AbstractMojo;
  11. import org.apache.maven.plugin.MojoExecutionException;
  12. import org.apache.maven.plugin.MojoFailureException;
  13. import org.jfrog.maven.annomojo.annotations.MojoGoal;
  14. import org.jfrog.maven.annomojo.annotations.MojoParameter;
  15. import static com.google.common.base.Preconditions.checkState;
  16. @MojoGoal("docco")
  17. public class DoccoMojo extends AbstractMojo
  18. {
  19. @MojoParameter(expression = "${docco.source.dir}", required = true, defaultValue = "${basedir}")
  20. protected File sourceDirectory;
  21. @MojoParameter(expression = "${docco.output.dir}", required = true, defaultValue = "${project.build.directory}/docco")
  22. protected File outputDirectory;
  23. @MojoParameter(expression = "${excludes}")
  24. protected String[] excludes;
  25. @MojoParameter(expression = "${includes}")
  26. protected String[] includes;
  27. @MojoParameter(expression = "${docco.horizontal.template}")
  28. protected File horizontalTemplate;
  29. @MojoParameter(expression = "${docco.vertical.template}")
  30. protected File verticalTemplate;
  31. @MojoParameter(expression = "${docco.custom.mappings}")
  32. private CustomMapping[] customMappings;
  33. @MojoParameter(expression = "${docco.index.title}", required = true, defaultValue = "Docco Index")
  34. protected String indexTitle;
  35. @MojoParameter(expression = "${docco.index.filename}", required = true, defaultValue = "index.html")
  36. protected String indexFilename;
  37. @MojoParameter(expression = "${docco.custom.resources}", required = true, defaultValue = "${build.outputDirectory}")
  38. protected File[] customResources;
  39. @MojoParameter(expression = "${docco.strip.javadoc}", required = true, defaultValue = "true")
  40. protected Boolean stripJavadoc;
  41. @MojoParameter(expression = "${docco.skip.no.docco}", required = true, defaultValue = "true")
  42. protected Boolean skipNoDocco;
  43. @Override
  44. public void execute() throws MojoExecutionException, MojoFailureException
  45. {
  46. //TODO: exclude hidden and target directories
  47. DoccoBatchBuilder builder = DoccoBatch.builder(sourceDirectory,outputDirectory);
  48. if(null != horizontalTemplate)
  49. {
  50. checkState(horizontalTemplate.exists());
  51. builder.horizontalTemplate(horizontalTemplate);
  52. }
  53. if(null != verticalTemplate)
  54. {
  55. checkState(verticalTemplate.exists());
  56. builder.verticalTemplate(verticalTemplate);
  57. }
  58. if(null != excludes)
  59. {
  60. builder.excludes(excludes);
  61. }
  62. if(null != includes)
  63. {
  64. builder.includes(includes);
  65. }
  66. builder.indexTitle(indexTitle);
  67. builder.indexFilename(indexFilename);
  68. builder.stripJavadoc(stripJavadoc);
  69. builder.skipNoDocco(skipNoDocco);
  70. if(null != customMappings && customMappings.length > 0)
  71. {
  72. DoccoFileMappingManager mappingManager = new DoccoFileMappingManager();
  73. for(Object mappingObj : customMappings)
  74. {
  75. CustomMapping mapping = (CustomMapping) mappingObj;
  76. checkState(StringUtils.isNotBlank(mapping.getExtension()));
  77. checkState(StringUtils.isNotBlank(mapping.getCommentType()));
  78. checkState(StringUtils.isNotBlank(mapping.getSyntax()));
  79. String type = mapping.getCommentType();
  80. checkState("code".equalsIgnoreCase(type) || "markup".equalsIgnoreCase(type) || "text".equalsIgnoreCase(type));
  81. DoccoCommentPatterns patterns = null;
  82. if("code".equalsIgnoreCase(type))
  83. {
  84. patterns = DoccoCommentPatternsBuilder.CODE_PATTERNS;
  85. }
  86. else if("markup".equalsIgnoreCase(type))
  87. {
  88. patterns = DoccoCommentPatternsBuilder.MARKUP_PATTERNS;
  89. }
  90. else if("text".equalsIgnoreCase(type))
  91. {
  92. patterns = DoccoCommentPatternsBuilder.TEXT_PATTERNS;
  93. }
  94. DoccoFileMapping doccoMapping = new DoccoFileMapping(patterns,mapping.getSyntax(),!mapping.getStripJavadoc());
  95. mappingManager.addMappingForFileExtension(mapping.getExtension(),doccoMapping);
  96. }
  97. builder.fileMappings(mappingManager);
  98. }
  99. if(null != customResources && customResources.length > 0)
  100. {
  101. builder.resources(Arrays.asList(customResources));
  102. }
  103. DoccoBatch batch = builder.build();
  104. try
  105. {
  106. batch.generateDocco();
  107. }
  108. catch (Exception e)
  109. {
  110. e.printStackTrace();
  111. throw new MojoExecutionException("Unable to generate Docco!", e);
  112. }
  113. }
  114. }