#!/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/ "<" sed -i -r 's/>/\>/g' "./$FILE" # ">" -> ">" sed -i -r 's_(\<)?(https?://[^ ]*)(\>| |$)_\1\2\3_i' "./$FILE" # Create hyperlinks from http(s) URLs sed -i -r 's/\<(.*@.*)\>/\<\1<\/a>\>/i' "./$FILE" # Create mailto links from email addresses formatted as sed -i -r 's/$/
/' "./$FILE" # "\n" -> "
" 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
' AUTHORS.html # Insert jamIcon above author names sed -i '5i
Jam Icon

' AUTHORS.html echo "
" >> 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 , 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="$LINE" fi echo "$LINE" >> $FILE done < "$FILE.old" rm "$FILE.old" print_debug "$FILE finished" done sed -i -r 's|(\*\ .*):|\1:|' 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 )"