From 0fe70c1cf434f492286e01e8528322134a10281a Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sat, 18 Jun 2011 09:39:01 -0400 Subject: [PATCH] Override settings from command-line. --- src/com/gitblit/BuildSite.java | 85 ++++++++++++++++++++++++++++-------------- 1 files changed, 56 insertions(+), 29 deletions(-) diff --git a/src/com/gitblit/BuildSite.java b/src/com/gitblit/BuildSite.java index 42bb48f..d96ca6e 100644 --- a/src/com/gitblit/BuildSite.java +++ b/src/com/gitblit/BuildSite.java @@ -37,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 { @@ -66,45 +67,60 @@ 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) { String documentName = getDocumentName(file); - String displayName = documentName; - if (aliasMap.containsKey(documentName)) { - displayName = aliasMap.get(documentName); + if (!params.skips.contains(documentName)) { + String displayName = documentName; + if (aliasMap.containsKey(documentName)) { + displayName = aliasMap.get(documentName); + } + String fileName = documentName + ".html"; + sb.append(MessageFormat.format(linkPattern, fileName, displayName)); + sb.append(" | "); } - String fileName = documentName + ".html"; - sb.append(MessageFormat.format(linkPattern, fileName, displayName)); - sb.append(" | "); } 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 fileName = documentName + ".html"; - System.out.println(MessageFormat.format(" {0} => {1}", file.getName(), fileName)); - InputStreamReader reader = new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")); - String content = MarkdownUtils.transformMarkdown(reader); - for (String token : params.substitutions) { - String [] kv = token.split("="); - content = content.replace(kv[0], kv[1]); + if (!params.skips.contains(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")); + String content = MarkdownUtils.transformMarkdown(reader); + for (String token : params.substitutions) { + String[] kv = token.split("="); + content = content.replace(kv[0], kv[1]); + } + 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); + reader.close(); + writer.close(); } - OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(new File(destinationFolder, fileName)), Charset.forName("UTF-8")); - writer.write(header); - writer.write(content); - writer.write(footer); - reader.close(); - writer.close(); } catch (Throwable t) { System.err.println("Failed to transform " + file.getName()); t.printStackTrace(); @@ -112,14 +128,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) { @@ -130,13 +150,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()); @@ -163,11 +184,17 @@ @Parameter(names = { "--pageFooter" }, description = "Page Footer HTML Snippet", required = true) public String pageFooter; + @Parameter(names = { "--skip" }, description = "Filename to skip", required = false) + public List<String> skips = new ArrayList<String>(); + @Parameter(names = { "--alias" }, description = "Filename=Linkname aliases", required = false) public List<String> aliases = new ArrayList<String>(); - @Parameter(names = { "--substitute" }, description = "@TOKEN@=value", required = false) + @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