diff options
author | Andrew Azores <[email protected]> | 2013-07-11 13:30:52 -0400 |
---|---|---|
committer | Andrew Azores <[email protected]> | 2013-07-11 13:30:52 -0400 |
commit | 1be948339f89b9ed5921e198dd177c88b6a98a9c (patch) | |
tree | e86ba3ed92f9f47bcf82f535275dd076fad892b8 /html-gen.sh | |
parent | 75ee86cad9f42b975194b9870aa1decadae88d9c (diff) |
Refactored HTML processing out of Makefile.am into html-gen.sh.
Diffstat (limited to 'html-gen.sh')
-rwxr-xr-x | html-gen.sh | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/html-gen.sh b/html-gen.sh new file mode 100755 index 0000000..5502f89 --- /dev/null +++ b/html-gen.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +# html-gen.sh +# Copyright (C) 2013 Red Hat +# +# This file is part of IcedTea. +# +# IcedTea is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# IcedTea is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IcedTea; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. +# +# Linking this library statically or dynamically with other modules is +# making a combined work based on this library. Thus, the terms and +# conditions of the GNU General Public License cover the whole +# combination. +# +# As a special exception, the copyright holders of this library give you +# permission to link this library with independent modules to produce an +# executable, regardless of the license terms of these independent +# modules, and to copy and distribute the resulting executable under +# terms of your choice, provided that you also meet, for each linked +# independent module, the terms and conditions of the license of that +# module. An independent module is a module which is not derived from +# or based on this library. If you modify this library, you may extend +# this exception to your version of the library, but you are not +# obligated to do so. If you do not wish to do so, delete this +# exception statement from your version. + +################################################################################ + +# This script is used by the stamps/html-gen target in Makefile.am. Its purpose +# is to produce HTML-escaped and formatted documents from a set of plaintext +# documents, namely AUTHORS, NEWS, ChangeLog, and COPYING, located in the +# same directory as this script. These generated HTML documents are then used +# in the netx About Dialog, which can be invoked with "javaws -about". + +# Currently the script is not configurable in any way and the files it processes +# are hardcoded. To run the script manually, create a directory "html-gen" in the +# same directory as this script, containing files named AUTHORS, NEWS, ChangeLog, +# and COPYING. Note that these files WILL be modified in-place during the HTML +# "conversion" process. Setting the environment variable "HTML_GEN_DEBUG" to "true" +# will enable some output from the script, which may be useful if you encounter +# issues with this script's processing of an input file. + +if [ -z "$HTML_GEN_DEBUG" ]; then HTML_GEN_DEBUG="false"; fi + +print_debug() { + if [ "$HTML_GEN_DEBUG" == "true" ]; then echo "$1"; fi +} + +start_time=$(date +%s.%N) + +cd html-gen + +print_debug "Starting sed substitutions" +for FILE in NEWS AUTHORS COPYING ChangeLog +do + print_debug "Processing $FILE..." + sed -i -r 's/\t/ /g' "./$FILE" # Convert tabs into four spaces + sed -i -r 's/\&/\&/g' "./$FILE" # "&" -> "&" + sed -i -r 's/ /\ \ /g' "./$FILE" # Double-spaces into HTML whitespace for format preservation + sed -i -r 's/</\</g' "./$FILE" # "<" -> "<" + sed -i -r 's/>/\>/g' "./$FILE" # ">" -> ">" + sed -i -r 's_(\<)?(https?://[^ ]*)(\>| |$)_\1<a href="\2">\2</a>\3_i' "./$FILE" # Create hyperlinks from http(s) URLs + sed -i -r 's/\<(.*@.*)\>/\<<a href="mailto:\1\?subject=IcedTea-Web">\1<\/a>\>/i' "./$FILE" # Create mailto links from email addresses formatted as <[email protected]> + sed -i -r 's/$/<br>/' "./$FILE" # "\n" -> "<br>" + + mv "$FILE" "$FILE.html" + print_debug "$FILE.html finished." +done + +print_debug "Done sed subs. Starting in-place additions" + +# Centre the column of author names in the Authors file +sed -i '4i <center>' AUTHORS.html +# Insert jamIcon above author names +sed -i '5i <br><img src="jamIcon.jpg" alt="Jam Icon" width="87" height="84"><br><br>' AUTHORS.html +echo "</center>" >> AUTHORS.html + +print_debug "Done. Starting formatting (bolding, mailto and hyperlink creation)" + +for FILE in NEWS.html ChangeLog.html +do + print_debug "Processing $FILE..." + mv $FILE "$FILE.old" + COUNTER=0 + while read LINE + do + BOLD=1 + if [[ $FILE == "NEWS.html" ]] + then + if [[ $LINE =~ New\ in\ release* ]] + then + BOLD=0 + COUNTER=$(( $COUNTER + 1 )) + fi + if [[ $COUNTER -gt 2 ]] # Cut to two releases + then + break + fi + else + if [[ $LINE =~ .*\<\;.*\@.*\>\; ]] # Matches eg <[email protected]>, after HTML-escaping + then + BOLD=0 + fi + if [[ $LINE =~ [0-9]{4}-[0-9]{2}-[0-9]{2}* ]] # Matches eg 2013-07-01 + then + COUNTER=$(( $COUNTER + 1 )) + fi + if [[ $COUNTER -gt 10 ]] # Cut to ten changesets + then + break + fi + fi + if [[ $BOLD -eq 0 ]] # Highlight "New In Release" in News, and author name lines in ChangeLog + then + LINE="<b>$LINE</b>" + fi + echo "$LINE" >> $FILE + done < "$FILE.old" + rm "$FILE.old" + print_debug "$FILE finished" +done + +sed -i -r 's|(\*\ .*):|<u>\1</u>:|' ChangeLog.html # Underline changed files in ChangeLog, eg "* Makefile.am:" + +end_time=$(date +%s.%N) + +print_debug "HTML generation complete" +print_debug "Total elapsed time: $(echo "$end_time - $start_time" | bc )" |