From e356211140bd2d80617c65f4b8dc649297a3ca8b Mon Sep 17 00:00:00 2001
From: Chris Greenshields <http://cfd.direct>
Date: Fri, 4 Dec 2015 14:20:23 +0000
Subject: [PATCH] foamNewApp: script to create template for a new application
 Creates a directory containing source .C file and Make directory Will
 deprecate foamNewSource with App argument in due course

---
 bin/foamNewApp                     | 73 ++++++++++++++++++++++++++++++
 etc/codeTemplates/app/Make/files   |  3 ++
 etc/codeTemplates/app/Make/options |  7 +++
 etc/codeTemplates/app/app.C        | 47 +++++++++++++++++++
 4 files changed, 130 insertions(+)
 create mode 100755 bin/foamNewApp
 create mode 100644 etc/codeTemplates/app/Make/files
 create mode 100644 etc/codeTemplates/app/Make/options
 create mode 100644 etc/codeTemplates/app/app.C

diff --git a/bin/foamNewApp b/bin/foamNewApp
new file mode 100755
index 00000000000..b2f664817bd
--- /dev/null
+++ b/bin/foamNewApp
@@ -0,0 +1,73 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+#    \\/     M anipulation  |
+#-------------------------------------------------------------------------------
+# License
+#     This file is part of OpenFOAM.
+#
+#     OpenFOAM 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 3 of the License, or
+#     (at your option) any later version.
+#
+#     OpenFOAM 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 OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Script
+#     foamNewApp
+#
+# Description
+#     Create directory with source and compilation files for a new application
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+DIR="$FOAM_ETC/codeTemplates/app"
+
+usage() {
+    while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+    cat<<USAGE
+Usage: $Script [-h | -help] <applicationName>
+
+* Create directory with source and compilation files for a new application
+  <applicationName> (dir)
+  - <applicationName>.C
+  - Make (dir)
+    - files
+    - options
+  Compiles an executable named <applicationName> in \$FOAM_USER_APPBIN:
+  $FOAM_USER_APPBIN
+USAGE
+    exit 1
+}
+
+case "$1" in
+(-h | -help)
+    usage
+    ;;
+-*)
+    usage "$1 is not a valid filename"
+    ;;
+esac
+
+[ "$#" -eq 1 ] || usage "Wrong number of arguments"
+[ -d "$1" ] && usage "$1 directory already exists, aborting..."
+
+NAME=$1
+
+echo "Creating application code directory $NAME" && mkdir $NAME
+sed "s#NAME#${NAME}#g" ${DIR}/app.C > $NAME/$NAME.C
+
+echo "Creating Make subdirectory" && mkdir $NAME/Make
+sed "s#NAME#${NAME}#g" ${DIR}/Make/files > $NAME/Make/files
+cp ${DIR}/Make/options $NAME/Make
+
+#------------------------------------------------------------------------------
diff --git a/etc/codeTemplates/app/Make/files b/etc/codeTemplates/app/Make/files
new file mode 100644
index 00000000000..bfe94ae06e9
--- /dev/null
+++ b/etc/codeTemplates/app/Make/files
@@ -0,0 +1,3 @@
+NAME.C
+
+EXE = $(FOAM_USER_APPBIN)/NAME
diff --git a/etc/codeTemplates/app/Make/options b/etc/codeTemplates/app/Make/options
new file mode 100644
index 00000000000..a3ae8da8331
--- /dev/null
+++ b/etc/codeTemplates/app/Make/options
@@ -0,0 +1,7 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools
diff --git a/etc/codeTemplates/app/app.C b/etc/codeTemplates/app/app.C
new file mode 100644
index 00000000000..e143dcdf22f
--- /dev/null
+++ b/etc/codeTemplates/app/app.C
@@ -0,0 +1,47 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM 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 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM 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 OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Application
+    NAME
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+    #include "createTime.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nEnd\n" << endl;
+    return 0;
+}
+
+
+// ************************************************************************* //
-- 
GitLab