[Libreoffice-commits] .: solenv/bin

Thorsten Behrens thorsten at kemper.freedesktop.org
Mon Feb 13 03:48:00 PST 2012


 solenv/bin/mkdocs.sh |  171 +++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 134 insertions(+), 37 deletions(-)

New commits:
commit af54a1b8b1b04860302e8a743f512d01a87f6b9c
Author: Thorsten Behrens <tbehrens at suse.com>
Date:   Mon Feb 13 12:44:47 2012 +0100

    Integrate Josh Heidenreich's nice README parser as start page.
    
    From https://github.com/TheJosh/tdf-misc's scrape.php, ported the
    concept over to bash, to have it run with the doxygen generation.

diff --git a/solenv/bin/mkdocs.sh b/solenv/bin/mkdocs.sh
index dbf4c46..a0ad6e4 100755
--- a/solenv/bin/mkdocs.sh
+++ b/solenv/bin/mkdocs.sh
@@ -1,27 +1,114 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
-# Doxygen Doc generation
+# Doxygen / README doc generation
 #
+# See git for contributors
+#
+
+function header {
+  title=$1
+  breadcrumb=$2
+  output=$3
+
+  cat - > $output <<EOF
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+	<title>$title</title>
+
+	<style>
+	* { margin: 0; padding: 0; }
+	body { font-family: sans-serif; font-size: 12px; }
+	#head { padding: 20px; background: #18A303; }
+	#head a { color: #000; }
+	#body { padding: 20px; }
+	#foot { padding: 10px; font-size: 9px; border-top: 1px #18A303 solid; margin-top: 25px; }
+	p { line-height: 1.7em; margin-bottom: 1em; }
+	pre { margin-bottom: 0.5em; }
+	.multi-col { -moz-column-width: 13em; -webkit-column-width: 13em; -moz-column-gap: 1em; -webkit-column-gap: 1em; }
+	h1 {margin-bottom: 0.5em;}
+	h2,h3,h4 { margin: 1.3em 0 0.5em 0; }
+	ul, ol { margin: 0.5em 1.5em; }
+	</style>
+</head>
+<body>
+	<div id="head">
+	<h1>$title</h1>
+	<p>$breadcrumb</p>
+	</div>
+	<div id="body">
+EOF
+}
+
+function footer {
+  output=$1
+
+  cat - >> $output <<EOF
+
+</div>
+<div id="foot">
+  <small>
+    <p>Generated by Libreoffice <a href="http://cgit.freedesktop.org/libreoffice/core/plain/solenv/bin/mkdocs.sh">Module Description Tool</a></p>
+    <p>Last updated:
+EOF
+LANG= date >> $output
+cat - >> $output <<EOF
+    </p>
+  </small>
+</div>
+</body>
+</html>
+EOF
+
+}
+
+function proc_text {
+  # Local links: [[...]]
+  # Git links: [git:...]
+  # Other remote links: [...]
+  # Headings: == bleh ==
+  # Paragraphs: \n\n
+  sed -re ' s/\[\[([-_a-zA-Z0-9]+)\]\]/<a href="\1.html">\1<\/a>/g' - \
+  | sed -re ' s/\[git:([^]]+)\]/<a href="http:\/\/cgit.freedesktop.org\/libreoffice\/core\/tree\/\1">\1<\/a>/g' \
+  | sed -re ' s/\[([^]]+)\]/<a href="\1">\1<\/a>/g' \
+  | sed -re ' s/====([^=]+)====/<h4>\1<\/h4>/g' \
+  | sed -re ' s/===([^=]+)===/<h3>\1<\/h3>/g' \
+  | sed -re ' s/==([^=]+)==/<h2>\1<\/h2>/g' \
+  | sed -re ':a;N;$!ba;s/\n\n/<\/p><p>/g' \
+  | awk 'BEGIN { print "<p>" } { print } END { print "</p>" }'
+}
+
+function setup {
+  parm=$1
+  if [ -z "${!parm}" ] ; then
+	echo "grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"  
+    echo "$parm=$(grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
+    eval "$parm=$(grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
+  fi
+  if [ -z "${!parm}" ] ; then
+    echo "could not determine $parm" >&2
+    exit 1
+  fi
+}
 
 # binaries that we need
 which doxygen > /dev/null 2>&1 || {
-    echo "You need doxygen for doc generation"
+    echo "You need doxygen for doc generation" >&2
     exit 1
 }
 which dot > /dev/null 2>&1 || {
-    echo "You need the graphviz tools to create the nice inheritance graphs"
+    echo "You need the graphviz tools to create the nice inheritance graphs" >&2
     exit 1
 }
 
-# otherwise, aliases are not expanded below
-shopt -s expand_aliases
+# suck setup
+setup "INPATH"
+setup "SOLARINC"
+shopt -s nullglob
 
 # Title of the documentation
 DOXYGEN_PROJECT_PREFIX="LibreOffice"
 
-# suck setup
-. ./Env.Host.sh
-
 # get list of modules in build order - bah, blows RAM & disk, static list below
 INPUT_PROJECTS="o3tl basegfx basebmp basic comphelper svl vcl canvas cppcanvas oox svtools goodies drawinglayer xmloff slideshow sfx2 editeng svx writerfilter cui chart2 dbaccess sd starmath sc sw"
 
@@ -44,7 +131,7 @@ fi
 DOXYGEN_INCLUDE_PATH=`echo $SOLARINC | sed -e ' s/-I\.//'g | sed -e ' s/ -I/ /'g | sed -e ' s|/usr/[^ ]*| |g'`
 
 # setup version string
-DOXYGEN_VERSION="$GITTAG"
+DOXYGEN_VERSION="master"
 
 
 ###################################################
@@ -54,12 +141,13 @@ DOXYGEN_VERSION="$GITTAG"
 ###################################################
 
 # cleanup
-rm -rf $BASE_OUTPUT/*
+echo "cleaning up" && rm -rf $BASE_OUTPUT/*
 
 # make the stuff world-readable
 umask 022
 
 # generate docs
+echo "generating doxygen docs"
 DOXYGEN_REF_TAGFILES=""
 for PROJECT in `echo $INPUT_PROJECTS|tr ' ' '\n'|sort|tr '\n' ' '`;
 do
@@ -89,39 +177,48 @@ do
   echo "Ref-Tags:   $DOXYGEN_REF_TAGFILES"
   echo "Title:      $DOXYGEN_PROJECTNAME"
 
-  nice -15 doxygen "$DOXYGEN_CFG" || exit 1
+  #nice -15 doxygen "$DOXYGEN_CFG" || exit 1
 
   # setup referenced tagfiles for next round
   DOXYGEN_REF_TAGFILES="$DOXYGEN_REF_TAGFILES $DOXYGEN_OUR_TAGFILE=$BASE_URL/$PROJECT/html"
 done
 
 # generate entry page
-cat - > $BASE_OUTPUT/index.html <<EOF
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-    <head>
-        <title>LibreOffice Source Code Documentation (fragmentary)</title>
-    </head>
-    <body>
-        <h1>LibreOffice Source Code Documentation (fragmentary)</h1>
-        <ul>
-EOF
-
-for PROJECT in $INPUT_PROJECTS;
-do
-  echo "<li><a href=\"$PROJECT/html/classes.html\">$PROJECT</a></li>" >> $BASE_OUTPUT/index.html
+echo "generating index page"
+header "LibreOffice Modules" " " "$BASE_OUTPUT/index.html"
+for module_name in *; do
+  if [ -d $module_name ]; then
+    cur_file=$(echo $module_name/README* $module_name/readme.txt*)
+	if [ -f "$cur_file" ]; then
+      # write index.html entry
+      text="<h2><a href=\"${module_name}.html\">${module_name}</a></h2>\n"
+	  text="${text}$(head -n1 $cur_file | proc_text )"
+	  echo -e $text >> "$BASE_OUTPUT/index.html"
+
+      # write detailed module content
+      header "$module_name" "<a href=\"index.html\">LibreOffice</a> &raquo; ${module_name}" "$BASE_OUTPUT/${module_name}.html"
+      text="<p><b>View module in:</b>"
+	  text="${text} &nbsp; <a href=\"http://cgit.freedesktop.org/libreoffice/core/tree/${module_name}\">cgit</a>"
+      if $(echo $INPUT_PROJECTS | grep -q $module_name); then
+        text="${text} &nbsp; <a href=\"${module_name}/html/classes.html\">Doxygen</a>"
+      fi
+      text="${text} </p><p>&nbsp;</p>"
+	  echo -e $text >> "$BASE_OUTPUT/${module_name}.html"
+	  proc_text < $cur_file >> "$BASE_OUTPUT/${module_name}.html"
+	  footer "$BASE_OUTPUT/${module_name}.html"
+    else
+      empty_modules[${#empty_modules[*]}]=$module_name
+	fi
+  fi  
 done
+if [ ${#empty_modules[*]} -gt 0 ]; then
+  echo -e "<p>&nbsp;</p><p>READMEs were not available for these modules:</p><ul>\n" >> "$BASE_OUTPUT/index.html"
+  for module_name in "${empty_modules[@]}"; do
+    echo -e "<li><a href=\"http://cgit.freedesktop.org/libreoffice/core/tree/${module_name}\">${module_name}</a></li>\n" >> "$BASE_OUTPUT/index.html"
+  done
+  echo -e "</ul>\n" >> "$BASE_OUTPUT/index.html"
+fi
 
-cat - >> $BASE_OUTPUT/index.html <<EOF
-        </ul>
-        <p>Last updated:
-EOF
-LANG= date >> $BASE_OUTPUT/index.html
-
-cat - >> $BASE_OUTPUT/index.html <<EOF
-        </p>
-    </body>
-</html>
-EOF
+footer "$BASE_OUTPUT/index.html"
 
 ## done


More information about the Libreoffice-commits mailing list