From f1720ca884bc3fa9da1288ad955e46f165aa4168 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 01 Jun 2011 08:09:46 -0400 Subject: [PATCH] Unit testing. Disable links on first commit. Initial stats page. --- src/com/gitblit/BuildSite.java | 80 ++++++++++++++++++++++++++++----------- 1 files changed, 57 insertions(+), 23 deletions(-) diff --git a/src/com/gitblit/BuildSite.java b/src/com/gitblit/BuildSite.java index 6ea8048..890cec1 100644 --- a/src/com/gitblit/BuildSite.java +++ b/src/com/gitblit/BuildSite.java @@ -1,3 +1,18 @@ +/* + * Copyright 2011 gitblit.com. + * + * 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 + * + * http://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 com.gitblit; import java.io.BufferedReader; @@ -22,6 +37,7 @@ import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; import com.gitblit.utils.MarkdownUtils; +import com.gitblit.utils.StringUtils; public class BuildSite { @@ -46,12 +62,13 @@ Arrays.sort(markdownFiles); Map<String, String> aliasMap = new HashMap<String, String>(); - for (String alias:params.aliases) { - String [] values = alias.split("="); + for (String alias : params.aliases) { + String[] values = alias.split("="); aliasMap.put(values[0], values[1]); } - - System.out.println(MessageFormat.format("Generating site from {0} Markdown Docs in {1} ", markdownFiles.length, sourceFolder.getAbsolutePath())); + + System.out.println(MessageFormat.format("Generating site from {0} Markdown Docs in {1} ", + markdownFiles.length, sourceFolder.getAbsolutePath())); String linkPattern = "<a href=''{0}''>{1}</a>"; StringBuilder sb = new StringBuilder(); for (File file : markdownFiles) { @@ -66,28 +83,34 @@ } sb.setLength(sb.length() - 3); sb.trimToSize(); - - String html_header = readContent(new File(params.pageHeader)); - String html_footer = readContent(new File(params.pageFooter)); + + String htmlHeader = readContent(new File(params.pageHeader), "\n"); + String htmlFooter = readContent(new File(params.pageFooter), "\n"); final String links = sb.toString(); - final String header = MessageFormat.format(html_header, Constants.FULL_NAME, links); + final String header = MessageFormat.format(htmlHeader, Constants.FULL_NAME, links); final String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - final String footer = MessageFormat.format(html_footer, "generated " + date); + final String footer = MessageFormat.format(htmlFooter, "generated " + date); for (File file : markdownFiles) { try { String documentName = getDocumentName(file); - String displayName = documentName; - if (aliasMap.containsKey(documentName)) { - displayName = aliasMap.get(documentName); - } String fileName = documentName + ".html"; System.out.println(MessageFormat.format(" {0} => {1}", file.getName(), fileName)); - InputStreamReader reader = new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")); + InputStreamReader reader = new InputStreamReader(new FileInputStream(file), + Charset.forName("UTF-8")); String content = MarkdownUtils.transformMarkdown(reader); - if (displayName.equalsIgnoreCase("overview")) { - content = MessageFormat.format(content, Constants.VERSION, "gitblit-" + Constants.VERSION + ".zip", Constants.getJGitVersion(), date); + for (String token : params.substitutions) { + String[] kv = token.split("="); + content = content.replace(kv[0], kv[1]); } - OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(new File(destinationFolder, fileName)), Charset.forName("UTF-8")); + for (String alias : params.loads) { + String[] kv = alias.split("="); + String loadedContent = readContent(new File(kv[1]), "\n"); + loadedContent = StringUtils.escapeForHtml(loadedContent, false); + loadedContent = StringUtils.breakLinesForHtml(loadedContent); + content = content.replace(kv[0], loadedContent); + } + OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(new File( + destinationFolder, fileName)), Charset.forName("UTF-8")); writer.write(header); writer.write(content); writer.write(footer); @@ -100,14 +123,18 @@ } } - private static String readContent(File file) { + private static String readContent(File file, String lineEnding) { StringBuilder sb = new StringBuilder(); try { - InputStreamReader is = new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")); + InputStreamReader is = new InputStreamReader(new FileInputStream(file), + Charset.forName("UTF-8")); BufferedReader reader = new BufferedReader(is); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); + if (lineEnding != null) { + sb.append(lineEnding); + } } reader.close(); } catch (Throwable t) { @@ -118,13 +145,14 @@ } private static String getDocumentName(File file) { - String displayName = file.getName().substring(0, file.getName().lastIndexOf('.')).toLowerCase(); + String displayName = file.getName().substring(0, file.getName().lastIndexOf('.')) + .toLowerCase(); // trim leading ##_ which is to control display order return displayName.substring(3); } - + private static void usage(JCommander jc, ParameterException t) { - System.out.println(Constants.getRunningVersion()); + System.out.println(Constants.getGitBlitVersion()); System.out.println(); if (t != null) { System.out.println(t.getMessage()); @@ -135,7 +163,7 @@ } System.exit(0); } - + @Parameters(separators = " ") private static class Params { @@ -154,5 +182,11 @@ @Parameter(names = { "--alias" }, description = "Filename=Linkname aliases", required = false) public List<String> aliases = new ArrayList<String>(); + @Parameter(names = { "--substitute" }, description = "%TOKEN%=value", required = false) + public List<String> substitutions = new ArrayList<String>(); + + @Parameter(names = { "--load" }, description = "%TOKEN%=filename", required = false) + public List<String> loads = new ArrayList<String>(); + } } -- Gitblit v1.9.1