From 0cc4ab73b746cf0c6bcff4d8d1136d9d186b295b Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Fri, 29 Sep 2017 18:36:48 +0200
Subject: [PATCH] ENH: adjust doxygen wrapper to accept multiple input
 directories

- the -dir option was added in commit c1c6243c3e2 to allow quick
  testing of documentation for a set of classes.
  This was largely replicated in commit 843d83117, but accepting
  multiple directories.

  Apply some of the same ideas here and avoid creation of a tmp file.
---
 doc/Doxygen/Allwmake | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/doc/Doxygen/Allwmake b/doc/Doxygen/Allwmake
index 726c5fbbe7e..21d606a9ab1 100755
--- a/doc/Doxygen/Allwmake
+++ b/doc/Doxygen/Allwmake
@@ -12,7 +12,7 @@ usage() {
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
     cat<<USAGE
 
-usage: ${0##*/} [OPTION]
+usage: ${0##*/} [OPTION] [dir1 .. dirN]
 options:
   -config name      use alternative doxygen config
   -dir    name      process given directory name directly
@@ -20,10 +20,13 @@ options:
                     local source code
   -help
 
+Run doxygen on OpenFOAM sources, or on specified directories only.
+
 USAGE
     exit 1
 }
 
+
 # -----------------------------------------------------------------------------
 
 defineURL() {
@@ -44,7 +47,7 @@ defineURL() {
 }
 
 
-unset configName dirName
+unset configName dirNames
 
 # Parse options
 while [ "$#" -gt 0 ]
@@ -73,16 +76,30 @@ do
         shift
         ;;
     -dir)
-        dirName="$2"
-        [ -d "$dirName" ] || {
-            echo "Could not resolve input directory: $dirName" 1>&2
-            exit 1
-        }
         shift
+        if [ -d "$1" ]
+        then
+            dirNames="$dirNames $1"
+        else
+            echo "Could not resolve input directory: $1" 1>&2
+            exit 1
+        fi
         ;;
     -online)
         defineURL
         ;;
+    -*)
+        usage "unknown option: '$1'"
+        ;;
+
+    *)  # dirName
+        if [ -d "$1" ]
+        then
+            dirNames="$dirNames $1"
+        else
+            echo "Could not resolve input directory: $1" 1>&2
+        fi
+        ;;
     *)
         usage "unknown option/argument: '$1'"
         ;;
@@ -102,14 +119,12 @@ rm -rf html-stagedRemove$$ >/dev/null 2>&1 &
 # Ensure that created files are readable by everyone
 umask 22
 
-if [ -n "$dirName" ]
+if [ -n "$dirNames" ]
 then
-    # Create a temporary with only the specified directory
-    tmpConfig="${TMPDIR:-/tmp}/Doxyfile.$$"
-    trap 'rm -f $tmpConfig 2>/dev/null; exit 0' EXIT TERM INT
-    cat $PWD/Doxyfile > $tmpConfig
-    echo "INPUT = $dirName" >> $tmpConfig
-    doxygen $tmpConfig
+    (
+        cat ${configName:-Doxyfile}
+        echo "INPUT = $dirNames"
+    ) | doxygen -
 else
     doxygen $configName
 fi
-- 
GitLab