in plugin/src/main/java/io/fabric8/maven/plugin/mojo/internal/ManifestIndexMojo.java [139:224]
protected void generateHTML(File outputHtmlFile, Map<String, ManifestInfo> manifests, boolean kubernetes, File introductionHtmlFile, File headHtmlFile, File footerHtmlFile) throws MojoExecutionException {
Map<String, SortedSet<ManifestInfo>> manifestMap = new TreeMap<>();
for (ManifestInfo manifestInfo : manifests.values()) {
String key = manifestInfo.getName();
SortedSet<ManifestInfo> set = manifestMap.get(key);
if (set == null) {
set = new TreeSet<>(createManifestComparator());
manifestMap.put(key, set);
}
set.add(manifestInfo);
}
try (PrintWriter writer = new PrintWriter(new FileWriter(outputHtmlFile))) {
writer.println("<html>");
writer.println("<head>");
writer.println(getHtmlFileContentOrDefault(headHtmlFile,
"<link href='style.css' rel=stylesheet>\n" +
"<link href='custom.css' rel=stylesheet>\n" +
"<title>" + manifestTitle + "</title>\n"));
writer.println("</head>");
writer.println("<body>");
writer.println(getHtmlFileContentOrDefault(introductionHtmlFile, "<h1>" + manifestTitle + "</h1>"));
writer.println("<table class='table table-striped table-hover'>");
writer.println(" <hhead>");
writer.println(" <tr>");
writer.println(" <th>Manifest</th>");
writer.println(" <th>Versions</th>");
writer.println(" </tr>");
writer.println(" </hhead>");
writer.println(" <tbody>");
for (Map.Entry<String, SortedSet<ManifestInfo>> entry : manifestMap.entrySet()) {
String key = entry.getKey();
SortedSet<ManifestInfo> set = entry.getValue();
if (!set.isEmpty()) {
ManifestInfo first = set.first();
first.configure(this);
if (!first.isValid()) {
continue;
}
String manifestDescription = getDescription(first);
writer.println(" <tr>");
writer.println(" <td title='" + manifestDescription + "'>");
String iconHtml = "";
String iconUrl = findIconURL(set);
if (Strings.isNotBlank(iconUrl)) {
iconHtml = "<img class='logo' src='" + iconUrl + "'>";
}
writer.println(" " + iconHtml + "<span class='manifest-name'>" + key + "</span>");
writer.println(" </td>");
writer.println(" <td class='versions'>");
int count = 0;
for (ManifestInfo manifestInfo : set) {
if (maxVersionsPerApp > 0 && ++count > maxVersionsPerApp) {
break;
}
String description = getDescription(manifestInfo);
String version = manifestInfo.getVersion();
String href = kubernetes ? manifestInfo.getKubernetesUrl() : manifestInfo.getOpenShiftUrl();
String versionId = manifestInfo.getId();
String command = kubernetes ? "kubectl" : "oc";
writer.println(" <a class='btn btn-default' role='button' data-toggle='collapse' href='#" + versionId + "' aria-expanded='false' aria-controls='" + versionId + "' title='" + description + "'>\n" +
version + "\n" +
"</a>\n" +
"<div class='collapse' id='" + versionId + "'>\n" +
" <div class='well'>\n" +
" <p>To install version <b>" + version + "</b> of <b>" + key + "</b> type the following command:</p>\n" +
" <code>" + command + " apply -f " + href + "</code>\n" +
" <div class='version-buttons'><a class='btn btn-primary' title='Download the YAML manifest for " + key + " version " + version + "' href='" + href + "'><i class='fa fa-download' aria-hidden='true'></i> Download Manifest</a> " +
"<a class='btn btn-primary' target='gofabric8' title='Run this application via the go.fabric8.io website' href='https://go.fabric8.io/?manifest=" + href + "'><i class='fa fa-external-link' aria-hidden='true'></i> Run via browser</a></div>\n" +
" </div>\n" +
"</div>");
}
writer.println(" </td>");
writer.println(" </tr>");
}
}
writer.println(" </tbody>");
writer.println(" </table>");
writer.println(getHtmlFileContentOrDefault(footerHtmlFile, ""));
writer.println("</body>");
} catch (IOException e) {
throw new MojoExecutionException("Failed to write to " + outputHtmlFile + ". " + e, e);
}
}