Skip to content

Commit

Permalink
Fixed invalid Dokka -pluginConfiguration argument. Closes #2
Browse files Browse the repository at this point in the history
  • Loading branch information
ethauvin committed May 23, 2024
1 parent 3a5f4f0 commit deb66a2
Showing 3 changed files with 24 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ public class CompileKotlinOperationBuild extends Project {
public CompileKotlinOperationBuild() {
pkg = "rife.bld.extension";
name = "bld-kotlin";
version = version(0, 9, 7);
version = version(0, 9, 8, "SNAPSHOT");

javaRelease = 17;
downloadSources = true;
31 changes: 20 additions & 11 deletions src/main/java/rife/bld/extension/dokka/DokkaOperation.java
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
private final Collection<String> globalPackageOptions_ = new ArrayList<>();
private final Collection<String> globalSrcLinks_ = new ArrayList<>();
private final Collection<String> includes_ = new ArrayList<>();
private final Map<String, String> pluginConfiguration_ = new ConcurrentHashMap<>();
private final Map<String, String> pluginsConfiguration_ = new ConcurrentHashMap<>();
private final Collection<String> pluginsClasspath_ = new ArrayList<>();
private boolean delayTemplateSubstitution_;
private boolean failOnWarning_;
@@ -64,6 +64,15 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
private SourceSet sourceSet_;
private boolean suppressInheritedMembers_;

// Encodes to JSON adding braces as needed
private static String encodeJson(final String json) {
var sb = new StringBuilder(json);
if (!json.startsWith("{") || !json.endsWith("}")) {
sb.insert(0, "{").append("}");
}
return StringUtils.encodeJson(sb.toString());
}

/**
* Sets the delay substitution of some elements.
* <p>
@@ -194,11 +203,11 @@ protected List<String> executeConstructProcessCommandList() {
}

// -pluginConfiguration
if (!pluginConfiguration_.isEmpty()) {
args.add("-pluginConfiguration");
if (!pluginsConfiguration_.isEmpty()) {
args.add("-pluginsConfiguration");
var confs = new ArrayList<String>();
pluginConfiguration_.forEach((k, v) ->
confs.add(String.format("{%s}={%s}", StringUtils.encodeJson(k), StringUtils.encodeJson(v))));
pluginsConfiguration_.forEach((k, v) ->
confs.add(String.format("%s=%s", encodeJson(k), encodeJson(v))));
args.add(String.join("^^", confs));
}

@@ -501,20 +510,20 @@ public DokkaOperation outputFormat(OutputFormat format) {
* @param jsonConfiguration The plugin JSON configuration
* @return this operation instance
*/
public DokkaOperation pluginConfiguration(String name, String jsonConfiguration) {
pluginConfiguration_.put(name, jsonConfiguration);
public DokkaOperation pluginConfigurations(String name, String jsonConfiguration) {
pluginsConfiguration_.put(name, jsonConfiguration);
return this;
}

/**
* Sets the configuration for Dokka plugins.
*
* @param pluginConfiguration the map of configurations
* @param pluginConfiguratione the map of configurations
* @return this operation instance
* @see #pluginConfiguration(String, String)
* @see #pluginConfigurations(String, String)
*/
public DokkaOperation pluginConfiguration(Map<String, String> pluginConfiguration) {
pluginConfiguration_.putAll(pluginConfiguration);
public DokkaOperation pluginConfigurations(Map<String, String> pluginConfiguratione) {
pluginsConfiguration_.putAll(pluginConfiguratione);
return this;
}

Original file line number Diff line number Diff line change
@@ -41,8 +41,8 @@ void executeConstructProcessCommandListTest() {
.globalSrcLink("link1", "link2")
.globalSrcLink(List.of("link3", "link4"))
.includes("file1", "file2")
.pluginConfiguration("name", "\"json\"")
.pluginConfiguration(Map.of("\"name2\"", "json2"))
.pluginConfigurations("name", "{\"json\"}")
.pluginConfigurations(Map.of("{\"name2\"}", "json2", "name3}", "{json3"))
.pluginsClasspath("path1", "path2")
.pluginsClasspath(List.of("path3", "path4"))
.delayTemplateSubstitution(true)
@@ -79,7 +79,7 @@ void executeConstructProcessCommandListTest() {
"-moduleVersion", "1.0",
"-noSuppressObviousFunctions",
"-offlineMode",
"-pluginConfiguration", "{name}={\\\"json\\\"}^^{\\\"name2\\\"}={json2}",
"-pluginsConfiguration", "{\\\"name2\\\"}={json2}^^{name}={\\\"json\\\"}^^{name3}}={{json3}",
"-suppressInheritedMembers");

assertThat(args).hasSize(matches.size());

0 comments on commit deb66a2

Please sign in to comment.