Convert parameters from String to File whenever applicable
This commit is contained in:
parent
2d5a3068cf
commit
af8e211feb
7 changed files with 429 additions and 92 deletions
|
@ -28,6 +28,7 @@ import java.util.*;
|
|||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Builds documentation (javadoc, HTML, etc.) using Dokka.
|
||||
|
@ -37,6 +38,7 @@ import java.util.logging.Logger;
|
|||
*/
|
||||
@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
|
||||
public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
||||
public static final String SEMICOLON = ";";
|
||||
private final static String GFM_PLUGIN_REGEXP =
|
||||
"^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$";
|
||||
private final static String HTML_PLUGIN_REGEXP =
|
||||
|
@ -49,8 +51,8 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
private final Map<String, String> globalLinks_ = new ConcurrentHashMap<>();
|
||||
private final Collection<String> globalPackageOptions_ = new ArrayList<>();
|
||||
private final Collection<String> globalSrcLinks_ = new ArrayList<>();
|
||||
private final Collection<String> includes_ = new ArrayList<>();
|
||||
private final Collection<String> pluginsClasspath_ = new ArrayList<>();
|
||||
private final Collection<File> includes_ = new ArrayList<>();
|
||||
private final Collection<File> pluginsClasspath_ = new ArrayList<>();
|
||||
private final Map<String, String> pluginsConfiguration_ = new ConcurrentHashMap<>();
|
||||
private boolean delayTemplateSubstitution_;
|
||||
private boolean failOnWarning_;
|
||||
|
@ -81,8 +83,8 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
* @param regex the regular expression to match
|
||||
* @return the list of JARs
|
||||
*/
|
||||
public static List<String> getJarList(File directory, String regex) {
|
||||
var jars = new ArrayList<String>();
|
||||
public static List<File> getJarList(File directory, String regex) {
|
||||
var jars = new ArrayList<File>();
|
||||
|
||||
if (directory.isDirectory()) {
|
||||
var files = directory.listFiles();
|
||||
|
@ -90,7 +92,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
for (var f : files) {
|
||||
if (!f.getName().endsWith("-sources.jar") && (!f.getName().endsWith("-javadoc.jar")) &&
|
||||
f.getName().matches(regex)) {
|
||||
jars.add(f.getAbsolutePath());
|
||||
jars.add(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -146,12 +148,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
|
||||
// -jar dokka-cli
|
||||
args.add("-jar");
|
||||
args.add(cli.get(0));
|
||||
args.add(cli.get(0).getAbsolutePath());
|
||||
|
||||
// -pluginClasspath
|
||||
if (!pluginsClasspath_.isEmpty()) {
|
||||
args.add("-pluginsClasspath");
|
||||
args.add(String.join(";", pluginsClasspath_));
|
||||
args.add(pluginsClasspath_.stream().map(File::getAbsolutePath).collect(Collectors.joining(SEMICOLON)));
|
||||
}
|
||||
|
||||
// -sourceSet
|
||||
|
@ -195,19 +197,19 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
// -globalPackageOptions
|
||||
if (!globalPackageOptions_.isEmpty()) {
|
||||
args.add("-globalPackageOptions");
|
||||
args.add(String.join(";", globalPackageOptions_));
|
||||
args.add(String.join(SEMICOLON, globalPackageOptions_));
|
||||
}
|
||||
|
||||
// -globalSrcLinks
|
||||
if (!globalSrcLinks_.isEmpty()) {
|
||||
args.add("-globalSrcLinks_");
|
||||
args.add(String.join(";", globalSrcLinks_));
|
||||
args.add(String.join(SEMICOLON, globalSrcLinks_));
|
||||
}
|
||||
|
||||
// -includes
|
||||
if (!includes_.isEmpty()) {
|
||||
args.add("-includes");
|
||||
args.add(String.join(";", includes_));
|
||||
args.add(includes_.stream().map(File::getAbsolutePath).collect(Collectors.joining(SEMICOLON)));
|
||||
}
|
||||
|
||||
// -loggingLevel
|
||||
|
@ -268,7 +270,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
* Configures the operation from a {@link BaseProject}.
|
||||
* <p>
|
||||
* Sets the {@link #sourceSet sourceSet}, {@link SourceSet#jdkVersion jdkVersion}, {@link #moduleName moduleName}
|
||||
* and {@link SourceSet#classpath(String...) classpath} from the project.
|
||||
* and {@link SourceSet#classpath(File...) classpath} from the project.
|
||||
*
|
||||
* @param project the project to configure the operation from
|
||||
*/
|
||||
|
@ -276,7 +278,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
public DokkaOperation fromProject(BaseProject project) {
|
||||
project_ = project;
|
||||
sourceSet_ = new SourceSet()
|
||||
.src(new File(project.srcMainDirectory(), "kotlin").getAbsolutePath())
|
||||
.src(new File(project.srcMainDirectory(), "kotlin"))
|
||||
.classpath(project.compileClasspathJars())
|
||||
.classpath(project.providedClasspathJars());
|
||||
if (project.javaRelease() != null) {
|
||||
|
@ -302,6 +304,15 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the global external documentation links.
|
||||
*
|
||||
* @return the documentation links
|
||||
*/
|
||||
public Map<String, String> globalLinks() {
|
||||
return globalLinks_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the global external documentation links.
|
||||
*
|
||||
|
@ -348,6 +359,15 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the global list of package configurations.
|
||||
*
|
||||
* @return the package configurations
|
||||
*/
|
||||
public Collection<String> globalPackageOptions() {
|
||||
return globalPackageOptions_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the global list of package configurations.
|
||||
* <p>
|
||||
|
@ -381,6 +401,15 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the global source links
|
||||
*
|
||||
* @return the source links
|
||||
*/
|
||||
public Collection<String> globalSrcLink() {
|
||||
return globalSrcLinks_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the global mapping between a source directory and a Web service for browsing the code.
|
||||
*
|
||||
|
@ -402,11 +431,37 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
* @param files one or more files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation includes(String... files) {
|
||||
public DokkaOperation includes(File... files) {
|
||||
Collections.addAll(includes_, files);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Markdown files that contain module and package documentation.
|
||||
* <p>
|
||||
* The contents of specified files are parsed and embedded into documentation as module and package descriptions.
|
||||
* <p>
|
||||
* This can be configured on per-package basis.
|
||||
*
|
||||
* @param files one or more files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation includes(String... files) {
|
||||
Collections.addAll(includes_, Arrays.stream(files)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the markdown files that contain the module and package documentation.
|
||||
*
|
||||
* @return the markdown files
|
||||
*/
|
||||
public Collection<File> includes() {
|
||||
return includes_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Markdown files that contain module and package documentation.
|
||||
* <p>
|
||||
|
@ -417,7 +472,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
* @param files the list of files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation includes(Collection<String> files) {
|
||||
public DokkaOperation includes(Collection<File> files) {
|
||||
includes_.addAll(files);
|
||||
return this;
|
||||
}
|
||||
|
@ -583,6 +638,26 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the plugin configurations.
|
||||
*
|
||||
* @return the plugin configurations.
|
||||
*/
|
||||
public Map<String, String> pluginConfigurations() {
|
||||
return pluginsConfiguration_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of jars with Dokka plugins and their dependencies.
|
||||
*
|
||||
* @param jars one or more jars
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation pluginsClasspath(File... jars) {
|
||||
Collections.addAll(pluginsClasspath_, jars);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of jars with Dokka plugins and their dependencies.
|
||||
*
|
||||
|
@ -590,34 +665,32 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
|
|||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation pluginsClasspath(String... jars) {
|
||||
Collections.addAll(pluginsClasspath_, jars);
|
||||
Collections.addAll(pluginsClasspath_, Arrays.stream(jars)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the plugins classpath.
|
||||
*
|
||||
* @return the classpath
|
||||
*/
|
||||
public Collection<File> pluginsClasspath() {
|
||||
return pluginsClasspath_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of jars with Dokka plugins and their dependencies.
|
||||
*
|
||||
* @param jars the list of jars
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation pluginsClasspath(Collection<String> jars) {
|
||||
public DokkaOperation pluginsClasspath(Collection<File> jars) {
|
||||
pluginsClasspath_.addAll(jars);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the list of Dokka plugins.
|
||||
*
|
||||
* @param clear set to clear the list
|
||||
* @return this operation instance
|
||||
*/
|
||||
public DokkaOperation pluginsClasspath(boolean clear) {
|
||||
if (clear) {
|
||||
pluginsClasspath_.clear();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the configurations for a source set.
|
||||
* <p>
|
||||
|
|
|
@ -21,6 +21,7 @@ import rife.bld.extension.DokkaOperation;
|
|||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Configuration for a Dokka source set.
|
||||
|
@ -29,17 +30,16 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
* @since 1.0
|
||||
*/
|
||||
public class SourceSet {
|
||||
private static final String SEMICOLON = ";";
|
||||
private final Collection<String> classpath_ = new ArrayList<>();
|
||||
private final Collection<File> classpath_ = new ArrayList<>();
|
||||
private final Map<String, String> dependentSourceSets_ = new ConcurrentHashMap<>();
|
||||
private final Collection<DocumentedVisibility> documentedVisibilities_ = new ArrayList<>();
|
||||
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentHashMap<>();
|
||||
private final Collection<String> includes_ = new ArrayList<>();
|
||||
private final Collection<File> includes_ = new ArrayList<>();
|
||||
private final Collection<String> perPackageOptions_ = new ArrayList<>();
|
||||
private final Collection<String> samples_ = new ArrayList<>();
|
||||
private final Collection<File> samples_ = new ArrayList<>();
|
||||
private final Map<String, String> srcLinks_ = new ConcurrentHashMap<>();
|
||||
private final Collection<String> src_ = new ArrayList<>();
|
||||
private final Collection<String> suppressedFiles_ = new ArrayList<>();
|
||||
private final Collection<File> src_ = new ArrayList<>();
|
||||
private final Collection<File> suppressedFiles_ = new ArrayList<>();
|
||||
private AnalysisPlatform analysisPlatform_;
|
||||
private String apiVersion_;
|
||||
private String displayName_;
|
||||
|
@ -110,7 +110,7 @@ public class SourceSet {
|
|||
// -classpath
|
||||
if (!classpath_.isEmpty()) {
|
||||
args.add("-classpath");
|
||||
args.add(String.join(SEMICOLON, classpath_));
|
||||
args.add(classpath_.stream().map(File::getAbsolutePath).collect(Collectors.joining(DokkaOperation.SEMICOLON)));
|
||||
}
|
||||
|
||||
// -dependentSourceSets
|
||||
|
@ -118,7 +118,7 @@ public class SourceSet {
|
|||
args.add("-dependentSourceSets");
|
||||
var deps = new ArrayList<String>();
|
||||
dependentSourceSets_.forEach((k, v) -> deps.add(String.format("%s/%s", k, v)));
|
||||
args.add(String.join(SEMICOLON, deps));
|
||||
args.add(String.join(DokkaOperation.SEMICOLON, deps));
|
||||
}
|
||||
|
||||
// -displayName
|
||||
|
@ -132,7 +132,7 @@ public class SourceSet {
|
|||
args.add("-documentedVisibilities");
|
||||
var vis = new ArrayList<String>();
|
||||
documentedVisibilities_.forEach(d -> vis.add(d.name().toLowerCase()));
|
||||
args.add(String.join(SEMICOLON, vis));
|
||||
args.add(String.join(DokkaOperation.SEMICOLON, vis));
|
||||
}
|
||||
|
||||
// -externalDocumentationLinks
|
||||
|
@ -152,7 +152,7 @@ public class SourceSet {
|
|||
// -includes
|
||||
if (!includes_.isEmpty()) {
|
||||
args.add("-includes");
|
||||
args.add(String.join(SEMICOLON, includes_));
|
||||
args.add(includes_.stream().map(File::getAbsolutePath).collect(Collectors.joining(DokkaOperation.SEMICOLON)));
|
||||
}
|
||||
|
||||
// -languageVersion
|
||||
|
@ -188,13 +188,13 @@ public class SourceSet {
|
|||
// -perPackageOptions
|
||||
if (!perPackageOptions_.isEmpty()) {
|
||||
args.add("-perPackageOptions");
|
||||
args.add(String.join(SEMICOLON, perPackageOptions_));
|
||||
args.add(String.join(DokkaOperation.SEMICOLON, perPackageOptions_));
|
||||
}
|
||||
|
||||
// -samples
|
||||
if (!samples_.isEmpty()) {
|
||||
args.add("-samples");
|
||||
args.add(String.join(SEMICOLON, samples_));
|
||||
args.add(samples_.stream().map(File::getAbsolutePath).collect(Collectors.joining(DokkaOperation.SEMICOLON)));
|
||||
}
|
||||
|
||||
// -skipDeprecated
|
||||
|
@ -206,7 +206,7 @@ public class SourceSet {
|
|||
// -src
|
||||
if (!src_.isEmpty()) {
|
||||
args.add("-src");
|
||||
args.add(String.join(SEMICOLON, src_));
|
||||
args.add(src_.stream().map(File::getAbsolutePath).collect(Collectors.joining(DokkaOperation.SEMICOLON)));
|
||||
}
|
||||
|
||||
// -srcLink
|
||||
|
@ -214,7 +214,7 @@ public class SourceSet {
|
|||
args.add("-srcLink");
|
||||
var links = new ArrayList<String>();
|
||||
srcLinks_.forEach((k, v) -> links.add(String.format("%s=%s", k, v)));
|
||||
args.add(String.join(SEMICOLON, links));
|
||||
args.add(String.join(DokkaOperation.SEMICOLON, links));
|
||||
}
|
||||
|
||||
// -sourceSetName
|
||||
|
@ -226,7 +226,7 @@ public class SourceSet {
|
|||
// -suppressedFiles
|
||||
if (!suppressedFiles_.isEmpty()) {
|
||||
args.add("-suppressedFiles");
|
||||
args.add(String.join(SEMICOLON, suppressedFiles_));
|
||||
args.add(suppressedFiles_.stream().map(File::getAbsolutePath).collect(Collectors.joining(DokkaOperation.SEMICOLON)));
|
||||
}
|
||||
|
||||
return args;
|
||||
|
@ -242,7 +242,7 @@ public class SourceSet {
|
|||
* @param files one or more file
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet classpath(String... files) {
|
||||
public SourceSet classpath(File... files) {
|
||||
Collections.addAll(classpath_, files);
|
||||
return this;
|
||||
}
|
||||
|
@ -254,11 +254,13 @@ public class SourceSet {
|
|||
* <p>
|
||||
* This option accepts both {@code .jar} and {@code .klib} files.
|
||||
*
|
||||
* @param files the list of files
|
||||
* @param files one or more file
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet classpath(Collection<String> files) {
|
||||
classpath_.addAll(files);
|
||||
public SourceSet classpath(String... files) {
|
||||
Collections.addAll(classpath_, Arrays.stream(files)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -272,11 +274,20 @@ public class SourceSet {
|
|||
* @param files the list of files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet classpath(List<File> files) {
|
||||
files.forEach(it -> classpath_.add(it.getAbsolutePath()));
|
||||
public SourceSet classpath(Collection<File> files) {
|
||||
classpath_.addAll(files);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the classpath for analysis and interactive samples.
|
||||
*
|
||||
* @return the classpath
|
||||
*/
|
||||
public Collection<File> classpath() {
|
||||
return classpath_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the names of dependent source sets.
|
||||
*
|
||||
|
@ -289,6 +300,15 @@ public class SourceSet {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the names of dependent source sets.
|
||||
*
|
||||
* @return the names
|
||||
*/
|
||||
public Map<String, String> dependentSourceSets() {
|
||||
return dependentSourceSets_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the names of dependent source sets.
|
||||
*
|
||||
|
@ -333,6 +353,15 @@ public class SourceSet {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the visibilities to be documented.
|
||||
*
|
||||
* @return the documented visibilities
|
||||
*/
|
||||
public Collection<DocumentedVisibility> documentedVisibilities() {
|
||||
return documentedVisibilities_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the external documentation links.
|
||||
* <p>
|
||||
|
@ -347,6 +376,15 @@ public class SourceSet {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the external documentation links.
|
||||
*
|
||||
* @return the documentation links.
|
||||
*/
|
||||
public Map<String, String> externalDocumentationLinks() {
|
||||
return externalDocumentationLinks_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the external documentation links.
|
||||
* <p>
|
||||
|
@ -372,11 +410,38 @@ public class SourceSet {
|
|||
* @param files one or more files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet includes(String... files) {
|
||||
public SourceSet includes(File... files) {
|
||||
Collections.addAll(includes_, files);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Markdown files that contain module and package documentation.
|
||||
* <p>
|
||||
* A list of Markdown files that contain module and package documentation.
|
||||
* <p>
|
||||
* The contents of the specified files are parsed and embedded into documentation as module and package
|
||||
* descriptions.
|
||||
*
|
||||
* @param files one or more files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet includes(String... files) {
|
||||
Collections.addAll(includes_, Arrays.stream(files)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the Markdown files that contain module and package documentation.
|
||||
*
|
||||
* @return the markdown files
|
||||
*/
|
||||
public Collection<File> includes() {
|
||||
return includes_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Markdown files that contain module and package documentation.
|
||||
* <p>
|
||||
|
@ -388,7 +453,7 @@ public class SourceSet {
|
|||
* @param files the list of files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet includes(Collection<String> files) {
|
||||
public SourceSet includes(Collection<File> files) {
|
||||
includes_.addAll(files);
|
||||
return this;
|
||||
}
|
||||
|
@ -517,6 +582,15 @@ public class SourceSet {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the list of package source set configuration.
|
||||
*
|
||||
* @return the package source set configuration
|
||||
*/
|
||||
public Collection<String> perPackageOptions() {
|
||||
return perPackageOptions_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the list of package source set configuration.
|
||||
* <p>
|
||||
|
@ -568,11 +642,34 @@ public class SourceSet {
|
|||
* @param samples the list of samples
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet samples(Collection<String> samples) {
|
||||
public SourceSet samples(Collection<File> samples) {
|
||||
samples_.addAll(samples);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the list of directories or files that contain sample functions.
|
||||
*
|
||||
* @return the directories or files
|
||||
*/
|
||||
public Collection<File> samples() {
|
||||
return samples_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the list of directories or files that contain sample functions.
|
||||
* <p>
|
||||
* A list of directories or files that contain sample functions which are referenced via the {@code @sample} KDoc
|
||||
* tag.
|
||||
*
|
||||
* @param samples nne or more samples
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet samples(File... samples) {
|
||||
Collections.addAll(samples_, samples);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the list of directories or files that contain sample functions.
|
||||
* <p>
|
||||
|
@ -583,7 +680,9 @@ public class SourceSet {
|
|||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet samples(String... samples) {
|
||||
Collections.addAll(samples_, samples);
|
||||
Collections.addAll(samples_, Arrays.stream(samples)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -622,7 +721,7 @@ public class SourceSet {
|
|||
* @param src the list of source code roots
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet src(Collection<String> src) {
|
||||
public SourceSet src(Collection<File> src) {
|
||||
src_.addAll(src);
|
||||
return this;
|
||||
}
|
||||
|
@ -636,11 +735,36 @@ public class SourceSet {
|
|||
* @param src pne ore moe source code roots
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet src(String... src) {
|
||||
public SourceSet src(File... src) {
|
||||
Collections.addAll(src_, src);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the source code roots to be analyzed and documented.
|
||||
* <p>
|
||||
* The source code roots to be analyzed and documented. Acceptable inputs are directories and individual
|
||||
* {@code .kt} / {@code .java} files.
|
||||
*
|
||||
* @param src pne ore moe source code roots
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet src(String... src) {
|
||||
Collections.addAll(src_, Arrays.stream(src)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the source code roots to be analyzed and documented.
|
||||
*
|
||||
* @return the source code roots
|
||||
*/
|
||||
public Collection<File> src() {
|
||||
return src_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mapping between a source directory and a Web service for browsing the code.
|
||||
*
|
||||
|
@ -654,6 +778,28 @@ public class SourceSet {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mapping between a source directory and a Web service for browsing the code.
|
||||
*
|
||||
* @param srcPath the source path
|
||||
* @param remotePath the remote path
|
||||
* @param lineSuffix the line suffix
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet srcLink(File srcPath, String remotePath, String lineSuffix) {
|
||||
srcLinks_.put(srcPath.getAbsolutePath(), remotePath + lineSuffix);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the mapping between a source directory and a Web service for browsing the code.
|
||||
*
|
||||
* @return the source links
|
||||
*/
|
||||
public Map<String, String> srcLinks() {
|
||||
return srcLinks_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the paths to files to be suppressed.
|
||||
* <p>
|
||||
|
@ -662,11 +808,21 @@ public class SourceSet {
|
|||
* @param suppressedFiles the list of suppressed files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet suppressedFiles(Collection<String> suppressedFiles) {
|
||||
public SourceSet suppressedFiles(Collection<File> suppressedFiles) {
|
||||
suppressedFiles_.addAll(suppressedFiles);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves the paths to files to be suppressed.
|
||||
*
|
||||
* @return the paths
|
||||
*/
|
||||
public Collection<File> suppressedFiles() {
|
||||
return suppressedFiles_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the paths to files to be suppressed.
|
||||
* <p>
|
||||
|
@ -676,6 +832,21 @@ public class SourceSet {
|
|||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet suppressedFiles(String... suppressedFiles) {
|
||||
Collections.addAll(suppressedFiles_, Arrays.stream(suppressedFiles)
|
||||
.map(File::new)
|
||||
.toArray(File[]::new));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the paths to files to be suppressed.
|
||||
* <p>
|
||||
* The files to be suppressed when generating documentation.
|
||||
*
|
||||
* @param suppressedFiles one or moe suppressed files
|
||||
* @return this operation instance
|
||||
*/
|
||||
public SourceSet suppressedFiles(File... suppressedFiles) {
|
||||
suppressedFiles_.addAll(Arrays.asList(suppressedFiles));
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
class DokkaOperationTest {
|
||||
@Test
|
||||
@SuppressWarnings({"ExtractMethodRecommender", "PMD.AvoidDuplicateLiterals"})
|
||||
@SuppressWarnings({"PMD.AvoidDuplicateLiterals"})
|
||||
void executeConstructProcessCommandListTest() throws IOException {
|
||||
var args = Files.readAllLines(Paths.get("src", "test", "resources", "dokka-args.txt"));
|
||||
|
||||
|
@ -43,7 +43,7 @@ class DokkaOperationTest {
|
|||
|
||||
var examples = new File("examples");
|
||||
var jsonConf = new File("config.json");
|
||||
var params = new DokkaOperation()
|
||||
var op = new DokkaOperation()
|
||||
.delayTemplateSubstitution(true)
|
||||
.failOnWarning(true)
|
||||
.fromProject(new BaseProjectBlueprint(examples, "com.example", "Example"))
|
||||
|
@ -53,8 +53,9 @@ class DokkaOperationTest {
|
|||
.globalPackageOptions(List.of("option3", "option4"))
|
||||
.globalSrcLink("link1", "link2")
|
||||
.globalSrcLink(List.of("link3", "link4"))
|
||||
.includes("file1", "file2")
|
||||
.includes(List.of("file3", "file4"))
|
||||
.includes(new File("file1"))
|
||||
.includes("file2")
|
||||
.includes(List.of(new File("file3"), new File("file4")))
|
||||
.json(jsonConf)
|
||||
.loggingLevel(LoggingLevel.DEBUG)
|
||||
.moduleName("name")
|
||||
|
@ -65,16 +66,24 @@ class DokkaOperationTest {
|
|||
.outputFormat(OutputFormat.JAVADOC)
|
||||
.pluginConfigurations("name", "{\"json\"}")
|
||||
.pluginConfigurations(Map.of("{\"name2\"}", "json2", "name3}", "{json3"))
|
||||
.pluginsClasspath("path1", "path2")
|
||||
.pluginsClasspath(List.of("path3", "path4"))
|
||||
.pluginsClasspath(new File("path1"))
|
||||
.pluginsClasspath("path2")
|
||||
.pluginsClasspath(List.of(new File("path3"), new File("path4")))
|
||||
.sourceSet(new SourceSet().classpath(
|
||||
List.of(
|
||||
new File("examples/foo.jar"),
|
||||
new File("examples/bar.jar")
|
||||
)))
|
||||
.suppressInheritedMembers(true)
|
||||
.executeConstructProcessCommandList();
|
||||
.suppressInheritedMembers(true);
|
||||
|
||||
assertThat(op.globalLinks()).as("globalLinks").hasSize(2);
|
||||
assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4);
|
||||
assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4);
|
||||
assertThat(op.includes()).as("includes").hasSize(4);
|
||||
assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3);
|
||||
assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9);
|
||||
|
||||
var params = op.executeConstructProcessCommandList();
|
||||
for (var p : args) {
|
||||
var found = false;
|
||||
for (var a : params) {
|
||||
|
@ -94,15 +103,17 @@ class DokkaOperationTest {
|
|||
path + "/lib/bld/analysis-kotlin-descriptors-" + dokkaJar + ';' +
|
||||
path + "/lib/bld/javadoc-plugin-" + dokkaJar + ';' +
|
||||
path + "/lib/bld/korte-jvm-4.0.10.jar;" +
|
||||
path + "/lib/bld/kotlin-as-java-plugin-" + dokkaJar + ";path1;path2;path3;path4",
|
||||
"-sourceSet", "-src " + path + "/src/main/kotlin" + " -classpath " + path + "/foo.jar;" + path + "/bar.jar",
|
||||
path + "/lib/bld/kotlin-as-java-plugin-" + dokkaJar + ';' +
|
||||
TestUtil.localPath("path1", "path2", "path3", "path4"),
|
||||
"-sourceSet", "-src " + path + "/src/main/kotlin" + " -classpath " + path + "/foo.jar;"
|
||||
+ path + "/bar.jar",
|
||||
"-outputDir", path + "/build",
|
||||
"-delayTemplateSubstitution",
|
||||
"-failOnWarning",
|
||||
"-globalLinks", "s^link^^s2^link2",
|
||||
"-globalPackageOptions", "option1;option2;option3;option4",
|
||||
"-globalSrcLinks_", "link1;link2;link3;link4",
|
||||
"-includes", "file1;file2;file3;file4",
|
||||
"-includes", TestUtil.localPath("file1", "file2", "file3", "file4"),
|
||||
"-loggingLevel", "debug",
|
||||
"-moduleName", "name",
|
||||
"-moduleVersion", "1.0",
|
||||
|
|
40
src/test/java/rife/bld/extension/TestUtil.java
Normal file
40
src/test/java/rife/bld/extension/TestUtil.java
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright 2023-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package rife.bld.extension;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static rife.bld.extension.DokkaOperation.SEMICOLON;
|
||||
|
||||
@SuppressWarnings("PMD.TestClassWithoutTestCases")
|
||||
public final class TestUtil {
|
||||
private TestUtil() {
|
||||
// no-op
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the local path of the given file names.
|
||||
*
|
||||
* @param fileNames The file names
|
||||
* @return the local path
|
||||
*/
|
||||
public static String localPath(String... fileNames) {
|
||||
return Arrays.stream(fileNames).map(it -> new File(it).getAbsolutePath()).collect(Collectors.joining(SEMICOLON));
|
||||
}
|
||||
}
|
|
@ -14,13 +14,11 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package rife.bld.extension;
|
||||
package rife.bld.extension.dokka;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import rife.bld.extension.dokka.AnalysisPlatform;
|
||||
import rife.bld.extension.dokka.DocumentedVisibility;
|
||||
import rife.bld.extension.dokka.SourceSet;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
|
@ -29,26 +27,36 @@ import java.util.Map;
|
|||
import java.util.stream.IntStream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static rife.bld.extension.TestUtil.localPath;
|
||||
|
||||
class SourceSetTest {
|
||||
public static final String SAMPLES_1 = "samples1";
|
||||
public static final String SAMPLES_2 = "samples2";
|
||||
public static final String SUP_1 = "sup1";
|
||||
public static final String SUP_2 = "sup2";
|
||||
|
||||
@Test
|
||||
void sourceSetCollectionsTest() {
|
||||
var args = new SourceSet()
|
||||
.classpath(List.of("path1", "path2"))
|
||||
.classpath(List.of(new File("path1"), new File("path2")))
|
||||
.dependentSourceSets(Map.of("set1", "set2", "set3", "set4"))
|
||||
.externalDocumentationLinks(Map.of("link1", "link2", "link3", "link4"))
|
||||
.perPackageOptions(List.of("option1", "option2"))
|
||||
.samples(List.of("samples1", "samples1"))
|
||||
.suppressedFiles(List.of("sup1", "sup2"))
|
||||
.samples(List.of(new File(SAMPLES_1)))
|
||||
.samples(new File(SAMPLES_2))
|
||||
.samples("samples3")
|
||||
.suppressedFiles(List.of(new File(SUP_1)))
|
||||
.suppressedFiles(new File(SUP_2))
|
||||
.suppressedFiles("sup3")
|
||||
.args();
|
||||
|
||||
var matches = List.of(
|
||||
"-classpath", "path1;path2",
|
||||
"-classpath", localPath("path1", "path2"),
|
||||
"-dependentSourceSets", "set1/set2;set3/set4",
|
||||
"-externalDocumentationLinks", "link3^link4^^link1^link2",
|
||||
"-perPackageOptions", "option1;option2",
|
||||
"-samples", "samples1;samples1",
|
||||
"-suppressedFiles", "sup1;sup2"
|
||||
"-samples", localPath(SAMPLES_1, SAMPLES_2, "samples3"),
|
||||
"-suppressedFiles", localPath(SUP_1, SUP_2, "sup3")
|
||||
);
|
||||
|
||||
assertThat(args).hasSize(matches.size());
|
||||
|
@ -66,13 +74,17 @@ class SourceSetTest {
|
|||
var sourceSet = new SourceSet()
|
||||
.analysisPlatform(AnalysisPlatform.JVM)
|
||||
.apiVersion("1.0")
|
||||
.classpath("classpath1", "classpath2")
|
||||
.classpath("classpath1")
|
||||
.classpath(new File("classpath2"))
|
||||
.dependentSourceSets("moduleName", "sourceSetName")
|
||||
.dependentSourceSets("moduleName2", "sourceSetName2")
|
||||
.displayName("name")
|
||||
.documentedVisibilities(DocumentedVisibility.PACKAGE, DocumentedVisibility.PRIVATE)
|
||||
.externalDocumentationLinks("url1", "packageListUrl1")
|
||||
.externalDocumentationLinks("url2", "packageListUrl2")
|
||||
.includes("includes1", "includes2")
|
||||
.includes(new File("includes3"))
|
||||
.includes(List.of(new File("includes4")))
|
||||
.jdkVersion(18)
|
||||
.languageVersion("2.0")
|
||||
.noJdkLink(true)
|
||||
|
@ -80,13 +92,26 @@ class SourceSetTest {
|
|||
.noStdlibLink(true)
|
||||
.perPackageOptions("options1", "options2")
|
||||
.reportUndocumented(true)
|
||||
.samples("samples1", "sample2")
|
||||
.samples(SAMPLES_1, SAMPLES_2)
|
||||
.skipDeprecated(true)
|
||||
.sourceSetName("setName")
|
||||
.src("src1", "src2")
|
||||
.src(new File("src3"))
|
||||
.src(List.of(new File("src4")))
|
||||
.srcLink("path1", "remote1", "#suffix1")
|
||||
.srcLink("path2", "remote2", "#suffix2")
|
||||
.suppressedFiles("sup1", "sup2");
|
||||
.srcLink(new File("path2"), "remote2", "#suffix2")
|
||||
.suppressedFiles(SUP_1, SUP_2);
|
||||
|
||||
assertThat(sourceSet.classpath()).as("classpath").hasSize(2);
|
||||
assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2);
|
||||
assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2);
|
||||
assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2);
|
||||
assertThat(sourceSet.includes()).as("includes").hasSize(4);
|
||||
assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2);
|
||||
assertThat(sourceSet.samples()).as("samples").hasSize(2);
|
||||
assertThat(sourceSet.src()).as("src").hasSize(4);
|
||||
assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(2);
|
||||
assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2);
|
||||
|
||||
var params = sourceSet.args();
|
||||
|
||||
|
@ -104,31 +129,31 @@ class SourceSetTest {
|
|||
var matches = List.of(
|
||||
"-analysisPlatform", "jvm",
|
||||
"-apiVersion", "1.0",
|
||||
"-classpath", "classpath1;classpath2",
|
||||
"-dependentSourceSets", "moduleName/sourceSetName",
|
||||
"-classpath", localPath("classpath1", "classpath2"),
|
||||
"-dependentSourceSets", "moduleName/sourceSetName;moduleName2/sourceSetName2",
|
||||
"-displayName", "name",
|
||||
"-documentedVisibilities", "package;private",
|
||||
"-externalDocumentationLinks", "url1^packageListUrl1^^url2^packageListUrl2",
|
||||
"-jdkVersion", "18",
|
||||
"-includes", "includes1;includes2",
|
||||
"-includes", localPath("includes1", "includes2", "includes3", "includes4"),
|
||||
"-languageVersion", "2.0",
|
||||
"-noJdkLink", "true",
|
||||
"-noSkipEmptyPackages", "true",
|
||||
"-noStdlibLink", "true",
|
||||
"-reportUndocumented", "true",
|
||||
"-perPackageOptions", "options1;options2",
|
||||
"-samples", "samples1;sample2",
|
||||
"-samples", localPath(SAMPLES_1, SAMPLES_2),
|
||||
"-skipDeprecated", "true",
|
||||
"-src", "src1;src2",
|
||||
"-srcLink", "path1=remote1#suffix1;path2=remote2#suffix2",
|
||||
"-src", localPath("src1", "src2", "src3", "src4"),
|
||||
"-srcLink", localPath("path2") + "=remote2#suffix2;path1=remote1#suffix1",
|
||||
"-sourceSetName", "setName",
|
||||
"-suppressedFiles", "sup1;sup2");
|
||||
"-suppressedFiles", localPath(SUP_1, SUP_2));
|
||||
|
||||
assertThat(params).hasSize(matches.size());
|
||||
|
||||
IntStream.range(0, params.size()).forEach(i -> assertThat(params.get(i)).isEqualTo(matches.get(i)));
|
||||
|
||||
sourceSet.classpath(List.of("classpath1", "classpath2"));
|
||||
sourceSet.classpath(List.of(new File("classpath1"), new File("classpath2")));
|
||||
|
||||
IntStream.range(0, params.size()).forEach(i -> assertThat(params.get(i)).isEqualTo(matches.get(i)));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue