From 8434931c298b81575b49dc1d7ad1aac6c428f343 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 18 Apr 2023 11:54:11 +0200 Subject: [PATCH] CONFIG: support call of 'openfoam' wrapper in other in-project locations - directory discovery originally designed for a sub-dir location (eg, etc/openfoam) but failed if called from within the sub-dir itself. Now simply assume it is located in the project directory or the etc/ sub-dir, so that it can also be relocated into the project directory in the future (pending changes to RPM and debian packaging) --- bin/tools/vscode-settings | 10 +++++++--- etc/openfoam | 38 ++++++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/bin/tools/vscode-settings b/bin/tools/vscode-settings index 2b6e851eac..6cf4804cd6 100755 --- a/bin/tools/vscode-settings +++ b/bin/tools/vscode-settings @@ -6,7 +6,7 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2020 OpenCFD Ltd. +# Copyright (C) 2020-2023 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -19,7 +19,7 @@ # # Example # bin/tools/vscode-settings > .vscode/settings.json -# etc/openfoam -spdp -int64 bin/tools/vscode-settings +# openfoam -spdp -int64 bin/tools/vscode-settings # # Environment # WM_PROJECT_DIR, WM_PROJECT_USER_DIR, WM_OPTIONS @@ -43,7 +43,7 @@ Emit some settings for Visual Studio Code + OpenFOAM For example, bin/tools/vscode-settings > .vscode/settings.json - etc/openfoam -spdp -int64 bin/tools/vscode-settings + openfoam -spdp -int64 bin/tools/vscode-settings USAGE exit 0 # clean exit @@ -80,6 +80,10 @@ echo "options: ${WM_OPTIONS:?not set}" 1>&2 if [ -x "$session" ] then echo "session: $session" 1>&2 +elif [ -x "$projectDir"/openfoam ] +then + session="$projectDir"/openfoam + echo "session: $session" 1>&2 else echo "No session: $session" 1>&2 fi diff --git a/etc/openfoam b/etc/openfoam index 7f775cfc59..2393ab3620 100755 --- a/etc/openfoam +++ b/etc/openfoam @@ -6,7 +6,7 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2019-2021 OpenCFD Ltd. +# Copyright (C) 2019-2023 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -20,10 +20,6 @@ # the OpenFOAM etc/bashrc file from the project directory. # # Note -# This script normally exists in the $WM_PROJECT_DIR/etc/ directory. -# Do not copy/move/link to other locations. Use instead an edited copy of -# `bin/tools/openfoam.in` with a hard-coded projectDir entry. -# # See OpenFOAM etc/bashrc for (command-line) preferences. # Some equivalent settings: # -sp | -DWM_PRECISION_OPTION=SP @@ -31,15 +27,33 @@ # -int32 | -DWM_LABEL_SIZE=32 # -int64 | -DWM_LABEL_SIZE=64 # -# The '-D' options grant even more flexibility. For example, -# etc/openfoam -DWM_COMPILER=Clang +# Can use '-D' options for even more flexibility. For example, +# +# openfoam -DWM_COMPILER=Clang +# +# Warning +# This script is to be located in one of the following locations: +# - $WM_PROJECT_DIR/ +# - $WM_PROJECT_DIR/etc/ +# - $WM_PROJECT_DIR/share/ +# +# Do not copy/move/link to other locations. +# Use instead an edited copy of `bin/tools/openfoam.in` +# with a hard-coded projectDir entry. # # SeeAlso # META-INFO/README.md for other routines that also use META-INFO. # #------------------------------------------------------------------------------ -# Auto-detect from location. Do not call from within the etc/directory itself! -projectDir="$(\cd "$(dirname "${0%/*}")" && \pwd -L)" +# Auto-detect from location +projectDir="$(\cd "$(dirname "$0")" && \pwd -L)" + +# Handle common sub-directory locations +case "$projectDir" in +(*/etc | */share) + projectDir="${projectDir%/*}" + ;; +esac #------------------------------------------------------------------------------ printHelp() { @@ -115,7 +129,7 @@ unset optTestTut while [ "$#" -gt 0 ] do case "$1" in - ('') ;; + ('') ;; # Ignore empty option (- | -- | /) shift break # Stop option parsing @@ -213,9 +227,9 @@ fi # Remove current OpenFOAM environment -if [ -d "$WM_PROJECT_DIR" ] && [ -f "$WM_PROJECT_DIR/etc/config.sh/unset" ] +if [ -d "$WM_PROJECT_DIR" ] && [ -f "$WM_PROJECT_DIR"/etc/config.sh/unset ] then - . "$WM_PROJECT_DIR/etc/config.sh/unset" || true + . "$WM_PROJECT_DIR"/etc/config.sh/unset || true fi