From 5282d9878ecbf96617c2d5c5407a26ce63e27cec Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 28 Mar 2024 17:56:09 -0700 Subject: [PATCH] Move UI bundle URL to package.json Closes gh-40132 --- antora/package.json | 3 +++ .../boot/build/AntoraConventions.java | 20 +++++++++++++++++++ .../build/antora/antora-playbook-template.yml | 3 --- .../boot/build/antora/expected-playbook.yml | 3 --- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/antora/package.json b/antora/package.json index 71d19b7ac1b..916db1ef62e 100644 --- a/antora/package.json +++ b/antora/package.json @@ -11,5 +11,8 @@ "@springio/antora-zip-contents-collector-extension": "1.0.0-alpha.2", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/asciidoctor-extensions": "1.0.0-alpha.10" + }, + "config": { + "ui-bundle-url": "https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.11/ui-bundle.zip" } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java index d46e580edea..e082cdc8ed9 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java @@ -17,11 +17,14 @@ package org.springframework.boot.build; import java.io.File; +import java.io.IOException; +import java.io.UncheckedIOException; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.gradle.node.NodeExtension; import com.github.gradle.node.npm.task.NpmInstallTask; import io.spring.gradle.antora.GenerateAntoraYmlPlugin; @@ -40,6 +43,7 @@ import org.springframework.boot.build.antora.GenerateAntoraPlaybook; import org.springframework.boot.build.bom.BomExtension; import org.springframework.boot.build.constraints.ExtractVersionConstraints; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; /** * Conventions that are applied in the presence of the {@link AntoraPlugin}. @@ -147,6 +151,7 @@ public class AntoraConventions { antoraTask.setGroup("Documentation"); antoraTask.dependsOn(npmInstallTask, generateAntoraPlaybookTask); antoraTask.setPlaybook("antora-playbook.yml"); + antoraTask.setUiBundleUrl(getUiBundleUrl(project)); project.getPlugins() .withType(JavaBasePlugin.class, (javaBasePlugin) -> project.getTasks() @@ -154,6 +159,21 @@ public class AntoraConventions { .dependsOn(antoraTask)); } + private String getUiBundleUrl(Project project) { + try { + File packageJson = project.getRootProject().file("antora/package.json"); + ObjectMapper objectMapper = new ObjectMapper(); + Map json = objectMapper.readerFor(Map.class).readValue(packageJson); + Map config = (json != null) ? (Map) json.get("config") : null; + String url = (config != null) ? (String) config.get("ui-bundle-url") : null; + Assert.state(StringUtils.hasText(url.toString()), "package.json has not ui-bundle-url config"); + return url; + } + catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } + private void configureAntoraExtension(Project project, AntoraExtension antoraExtension) { if (project.getGradle().getStartParameter().getLogLevel() != LogLevel.DEBUG) { antoraExtension.getOptions().add("--quiet"); diff --git a/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-playbook-template.yml b/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-playbook-template.yml index dba5023b04c..6960bc19792 100644 --- a/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-playbook-template.yml +++ b/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-playbook-template.yml @@ -22,6 +22,3 @@ urls: runtime: log: failure_level: warn -ui: - bundle: - url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.11/ui-bundle.zip \ No newline at end of file diff --git a/buildSrc/src/test/resources/org/springframework/boot/build/antora/expected-playbook.yml b/buildSrc/src/test/resources/org/springframework/boot/build/antora/expected-playbook.yml index 3ccbbc6e9da..0972568108b 100644 --- a/buildSrc/src/test/resources/org/springframework/boot/build/antora/expected-playbook.yml +++ b/buildSrc/src/test/resources/org/springframework/boot/build/antora/expected-playbook.yml @@ -43,8 +43,5 @@ urls: runtime: log: failure_level: warn -ui: - bundle: - url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.11/ui-bundle.zip output: dir: ./../../../site