mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: several improvements to foamEtcFile
- lazier evaluation of project name and version based on the directory name. Avoids heuristics based on directory names unless really needed. - cope with alternative directory locations. For example, OpenFOAM+VERSION etc. The combination of the two above appears to be sufficient to open up the directory naming possibilities. - additional -list-test option (tests for existence of directory).
This commit is contained in:
302
bin/foamEtcFile
302
bin/foamEtcFile
@ -26,7 +26,7 @@
|
|||||||
# foamEtcFile
|
# foamEtcFile
|
||||||
#
|
#
|
||||||
# Description
|
# Description
|
||||||
# Locate user/group/shipped file with semantics similar to the
|
# Locate user/group/other files with semantics similar to the
|
||||||
# ~OpenFOAM/fileName expansion.
|
# ~OpenFOAM/fileName expansion.
|
||||||
#
|
#
|
||||||
# The -mode option can be used to allow chaining from
|
# The -mode option can be used to allow chaining from
|
||||||
@ -34,44 +34,56 @@
|
|||||||
#
|
#
|
||||||
# For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
|
# For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
|
||||||
# \code
|
# \code
|
||||||
# foamFile=$(foamEtcFile -mode go prefs.sh) && . $foamFile
|
# eval $(foamEtcFile -sh -mode=go prefs.sh)
|
||||||
# \endcode
|
# \endcode
|
||||||
#
|
#
|
||||||
|
# Environment
|
||||||
|
# - WM_PROJECT: (unset defaults to OpenFOAM)
|
||||||
|
# - WM_PROJECT_SITE: (unset defaults to PREFIX/site)
|
||||||
|
# - WM_PROJECT_VERSION: (unset defaults to detect from path)
|
||||||
|
#
|
||||||
# Note
|
# Note
|
||||||
# This script must exist in $FOAM_INST_DIR/OpenFOAM-<VERSION>/bin/
|
# This script must exist in one of these locations:
|
||||||
# or $FOAM_INST_DIR/openfoam<VERSION>/bin/ (for the debian version)
|
# - $WM_PROJECT_INST_DIR/OpenFOAM-<VERSION>/bin
|
||||||
|
# - $WM_PROJECT_INST_DIR/openfoam-<VERSION>/bin
|
||||||
|
# - $WM_PROJECT_INST_DIR/OpenFOAM+<VERSION>/bin
|
||||||
|
# - $WM_PROJECT_INST_DIR/openfoam+<VERSION>/bin
|
||||||
|
# - $WM_PROJECT_INST_DIR/openfoam<VERSION>/bin (debian version)
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
unset optQuiet optSilent
|
unset optQuiet optSilent
|
||||||
usage() {
|
usage() {
|
||||||
[ "${optQuiet:-$optSilent}" = true ] && exit 1
|
[ "${optQuiet:-$optSilent}" = true ] && exit 1
|
||||||
|
|
||||||
exec 1>&2
|
exec 1>&2
|
||||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||||
cat<<USAGE
|
cat<<USAGE
|
||||||
|
|
||||||
Usage: foamEtcFile [OPTION] fileName
|
Usage: foamEtcFile [OPTION] fileName
|
||||||
foamEtcFile [OPTION] -list
|
foamEtcFile [OPTION] [-list|-list-test] [fileName]
|
||||||
|
|
||||||
options:
|
options:
|
||||||
-a, -all return all files (otherwise stop after the first match)
|
-a, -all Return all files (otherwise stop after the first match)
|
||||||
-l, -list list the directories to be searched
|
-l, -list List directories or files to be checked
|
||||||
-m, -mode MODE any combination of u(user), g(group), o(other)
|
-list-test List (existing) directories or files to be checked
|
||||||
-p, -prefix DIR specify an alternative installation prefix
|
-mode=MODE Any combination of u(user), g(group), o(other)
|
||||||
-q, -quiet suppress all normal output
|
-prefix=DIR Specify an alternative installation prefix
|
||||||
-s, -silent suppress stderr output, except for things that are emitted
|
-version=VER Specify alternative OpenFOAM version (eg, 3.0, 1612, ...)
|
||||||
by -csh-verbose, -sh-verbose.
|
-csh | -sh Produce output suitable for a csh or sh 'eval'
|
||||||
-v, -version VER specify alternative OpenFOAM version (eg, 3.0, 1612, ...)
|
-csh-verbose | -sh-verbose
|
||||||
-csh | -sh produce output suitable for a csh or sh 'eval'
|
As per -csh | -sh, with additional verbosity
|
||||||
-csh-verbose,
|
-q, -quiet Suppress all normal output
|
||||||
-sh-verbose with additional verbosity
|
-s, -silent Suppress stderr, except -csh-verbose, -sh-verbose output
|
||||||
-help print the usage
|
-help Print the usage
|
||||||
|
|
||||||
Locate user/group/shipped file with semantics similar to the
|
Locate user/group/other file with semantics similar to the
|
||||||
~OpenFOAM/fileName expansion.
|
~OpenFOAM/fileName expansion.
|
||||||
|
|
||||||
Many options can be specified as a single character, but must not be grouped.
|
Single character options must not be grouped. Equivalent options:
|
||||||
|
-mode=MODE, -mode MODE, -m MODE
|
||||||
|
-prefix=DIR, -prefix DIR, -p DIR
|
||||||
|
-version=VER, -version VER, -v VER
|
||||||
|
|
||||||
Exit status
|
Exit status
|
||||||
0 when the file is found. Print resolved path to stdout.
|
0 when the file is found. Print resolved path to stdout.
|
||||||
1 for miscellaneous errors.
|
1 for miscellaneous errors.
|
||||||
2 when the file is not found.
|
2 when the file is not found.
|
||||||
@ -79,74 +91,118 @@ options:
|
|||||||
USAGE
|
USAGE
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Report error and exit
|
||||||
|
die()
|
||||||
|
{
|
||||||
|
[ "${optQuiet:-$optSilent}" = true ] && exit 1
|
||||||
|
exec 1>&2
|
||||||
|
echo
|
||||||
|
echo "Error encountered:"
|
||||||
|
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
|
||||||
|
echo
|
||||||
|
echo "See 'foamEtcFile -help' for usage"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
binDir="${0%/*}" # The bin dir
|
||||||
|
projectDir="${binDir%/bin}" # The project dir
|
||||||
|
prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
|
||||||
|
|
||||||
|
# Could not resolve projectDir, prefixDir? (eg, called as ./bin/foamEtcFile)
|
||||||
|
if [ "$prefixDir" = "$projectDir" ]
|
||||||
|
then
|
||||||
|
binDir="$(cd $binDir && pwd -L)"
|
||||||
|
projectDir="${binDir%/bin}"
|
||||||
|
prefixDir="${projectDir%/*}"
|
||||||
|
fi
|
||||||
|
projectDirName="${projectDir##*/}" # The project directory name
|
||||||
|
|
||||||
|
projectName="${WM_PROJECT:-OpenFOAM}" # The project name
|
||||||
|
projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
# The bin dir:
|
# Guess project version or simply get the stem part of the projectDirName.
|
||||||
binDir="${0%/*}"
|
|
||||||
|
|
||||||
# The project dir:
|
|
||||||
projectDir="${binDir%/bin}"
|
|
||||||
|
|
||||||
# The prefix dir (same as $FOAM_INST_DIR):
|
|
||||||
prefixDir="${projectDir%/*}"
|
|
||||||
|
|
||||||
# The name used for the project directory
|
|
||||||
projectDirName="${projectDir##*/}"
|
|
||||||
|
|
||||||
# The versionNum is used for debian packaging
|
|
||||||
unset versionNum
|
|
||||||
|
|
||||||
#
|
|
||||||
# Handle standard and debian naming conventions.
|
# Handle standard and debian naming conventions.
|
||||||
# - projectDirBase: projectDirName without the version
|
|
||||||
# - version
|
|
||||||
# - versionNum (debian only)
|
|
||||||
#
|
#
|
||||||
case "$projectDirName" in
|
# - projectVersion: update unless already set
|
||||||
OpenFOAM-* | openfoam-*) # OpenFOAM-<VERSION> or openfoam-<VERSION>
|
#
|
||||||
projectDirBase="${projectDirName%%-*}-"
|
# Helper variables:
|
||||||
|
# - dirBase (for reassembling name) == projectDirName without the version
|
||||||
|
# - versionNum (debian packaging)
|
||||||
|
unset dirBase versionNum
|
||||||
|
guessVersion()
|
||||||
|
{
|
||||||
|
local version
|
||||||
|
|
||||||
|
case "$projectDirName" in
|
||||||
|
(OpenFOAM-* | openfoam-*)
|
||||||
|
# Standard naming: OpenFOAM-<VERSION> or openfoam-<VERSION>
|
||||||
|
dirBase="${projectDirName%%-*}-"
|
||||||
version="${projectDirName#*-}"
|
version="${projectDirName#*-}"
|
||||||
|
version="${version%%*-}" # Extra safety, eg openfoam-version-packager
|
||||||
;;
|
;;
|
||||||
|
|
||||||
openfoam[0-9]*) # Debian: openfoam<VERSION>
|
(OpenFOAM+* | openfoam+*)
|
||||||
projectDirBase="openfoam"
|
# Alternative naming: OpenFOAM+<VERSION> or openfoam+<VERSION>
|
||||||
versionNum="${projectDirName#openfoam}"
|
dirBase="${projectDirName%%+*}+"
|
||||||
case "${#versionNum}" in
|
version="${projectDirName#*+}"
|
||||||
(2|3|4) # Convert digits version number to decimal delineated
|
version="${version%%*-}" # Extra safety, eg openfoam-version-packager
|
||||||
|
;;
|
||||||
|
|
||||||
|
(openfoam[0-9]*)
|
||||||
|
# Debian naming: openfoam<VERSION>
|
||||||
|
dirBase="openfoam"
|
||||||
|
version="${projectDirName#openfoam}"
|
||||||
|
versionNum="$version"
|
||||||
|
|
||||||
|
# Convert digits version number to decimal delineated
|
||||||
|
case "${#versionNum}" in (2|3|4)
|
||||||
version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g')
|
version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g')
|
||||||
version="${version%.}"
|
version="${version%.}"
|
||||||
;;
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
(*) # Fallback - use current environment setting
|
# Ignore special treatment if no decimals were inserted.
|
||||||
version="$WM_PROJECT_VERSION"
|
[ "${#version}" -gt "${#versionNum}" ] || unset versionNum
|
||||||
|
;;
|
||||||
|
|
||||||
|
(*)
|
||||||
|
die "unknown/unsupported naming convention for '$projectDirName'"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
# Set projectVersion if required
|
||||||
echo "foamEtcFile error: unknown/unsupported naming convention" 1>&2
|
: ${projectVersion:=$version}
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
# Set version and update versionNum, projectDirName accordingly
|
|
||||||
setVersion()
|
|
||||||
{
|
|
||||||
version="$1"
|
|
||||||
|
|
||||||
# Convert x.y.z -> xyz version (if installation looked like debian)
|
|
||||||
[ -n "$versionNum" ] && versionNum=$(echo "$version" | sed -e 's@\.@@g')
|
|
||||||
|
|
||||||
projectDirName="$projectDirBase${versionNum:-${version}}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Default mode is always 'ugo'
|
# Set projectVersion and update versionNum, projectDirName accordingly
|
||||||
mode=ugo
|
setVersion()
|
||||||
unset optAll optList optShell
|
{
|
||||||
|
projectVersion="$1"
|
||||||
|
|
||||||
# parse options
|
# Need dirBase when reassembling projectDirName
|
||||||
|
[ -n "$dirBase" ] || guessVersion
|
||||||
|
|
||||||
|
# Debian: update x.y.z -> xyz version
|
||||||
|
if [ -n "$versionNum" ]
|
||||||
|
then
|
||||||
|
versionNum=$(echo "$projectVersion" | sed -e 's@\.@@g')
|
||||||
|
fi
|
||||||
|
|
||||||
|
projectDirName="$dirBase${versionNum:-$projectVersion}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
optMode=ugo # Default mode is always 'ugo'
|
||||||
|
unset optAll optList optShell optVersion
|
||||||
|
|
||||||
|
# Parse options
|
||||||
while [ "$#" -gt 0 ]
|
while [ "$#" -gt 0 ]
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@ -161,34 +217,38 @@ do
|
|||||||
optList=true
|
optList=true
|
||||||
unset optShell
|
unset optShell
|
||||||
;;
|
;;
|
||||||
|
-list-test)
|
||||||
|
optList='test'
|
||||||
|
unset optShell
|
||||||
|
;;
|
||||||
-csh | -sh | -csh-verbose | -sh-verbose)
|
-csh | -sh | -csh-verbose | -sh-verbose)
|
||||||
optShell="${1#-}"
|
optShell="${1#-}"
|
||||||
unset optAll
|
unset optAll
|
||||||
;;
|
;;
|
||||||
-mode=[ugo]*)
|
-mode=[ugo]*)
|
||||||
mode="${1#*=}"
|
optMode="${1#*=}"
|
||||||
;;
|
;;
|
||||||
-prefix=/*)
|
-prefix=/*)
|
||||||
prefixDir="${1#*=}"
|
prefixDir="${1#*=}"
|
||||||
prefixDir="${prefixDir%/}"
|
prefixDir="${prefixDir%/}"
|
||||||
;;
|
;;
|
||||||
-version=*)
|
-version=*)
|
||||||
setVersion "${1#*=}"
|
optVersion="${1#*=}"
|
||||||
;;
|
;;
|
||||||
-m | -mode)
|
-m | -mode)
|
||||||
mode="$2"
|
optMode="$2"
|
||||||
|
shift
|
||||||
# Sanity check. Handles missing argument too.
|
# Sanity check. Handles missing argument too.
|
||||||
case "$mode" in
|
case "$optMode" in
|
||||||
[ugo]*)
|
([ugo]*)
|
||||||
;;
|
;;
|
||||||
*)
|
(*)
|
||||||
usage "invalid mode '$mode'"
|
die "invalid mode '$optMode'"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-p | -prefix)
|
-p | -prefix)
|
||||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
|
||||||
prefixDir="${2%/}"
|
prefixDir="${2%/}"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
@ -199,8 +259,8 @@ do
|
|||||||
optSilent=true
|
optSilent=true
|
||||||
;;
|
;;
|
||||||
-v | -version)
|
-v | -version)
|
||||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
|
||||||
setVersion "$2"
|
optVersion="$2"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--)
|
--)
|
||||||
@ -208,7 +268,7 @@ do
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-*)
|
-*)
|
||||||
usage "unknown option: '$1'"
|
die "unknown option: '$1'"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
break
|
break
|
||||||
@ -217,12 +277,27 @@ do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
# Update projectDir accordingly
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if [ -n "$optVersion" ]
|
||||||
|
then
|
||||||
|
setVersion $optVersion
|
||||||
|
elif [ -z "$projectVersion" ]
|
||||||
|
then
|
||||||
|
guessVersion
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Updates:
|
||||||
|
# - projectDir for changes via -prefix or -version
|
||||||
|
# - projectSite for changes via -prefix
|
||||||
projectDir="$prefixDir/$projectDirName"
|
projectDir="$prefixDir/$projectDirName"
|
||||||
|
projectSite="${WM_PROJECT_SITE:-$prefixDir/site}"
|
||||||
|
|
||||||
|
|
||||||
# Debugging:
|
# Debugging:
|
||||||
# echo "Installed locations:" 1>&2
|
# echo "Installed locations:" 1>&2
|
||||||
# for i in projectDir prefixDir projectDirName version versionNum
|
# for i in projectDir prefixDir projectDirName projectVersion
|
||||||
# do
|
# do
|
||||||
# eval echo "$i=\$$i" 1>&2
|
# eval echo "$i=\$$i" 1>&2
|
||||||
# done
|
# done
|
||||||
@ -235,19 +310,17 @@ fileName="${1#~OpenFOAM/}"
|
|||||||
|
|
||||||
# Define the various places to be searched:
|
# Define the various places to be searched:
|
||||||
unset dirList
|
unset dirList
|
||||||
case "$mode" in (*u*) # (U)ser
|
case "$optMode" in (*u*) # (U)ser
|
||||||
dir="$HOME/.${WM_PROJECT:-OpenFOAM}"
|
dirList="$dirList $HOME/.$projectName/$projectVersion $HOME/.$projectName"
|
||||||
dirList="$dirList $dir/$version $dir"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$mode" in (*g*) # (G)roup == site
|
case "$optMode" in (*g*) # (G)roup == site
|
||||||
dir="${WM_PROJECT_SITE:-$prefixDir/site}"
|
dirList="$dirList $projectSite/$projectVersion $projectSite"
|
||||||
dirList="$dirList $dir/$version $dir"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$mode" in (*o*) # (O)ther == shipped
|
case "$optMode" in (*o*) # (O)ther == shipped
|
||||||
dirList="$dirList $projectDir/etc"
|
dirList="$dirList $projectDir/etc"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -259,30 +332,54 @@ set -- $dirList
|
|||||||
#
|
#
|
||||||
|
|
||||||
exitCode=0
|
exitCode=0
|
||||||
if [ "$optList" = true ]
|
if [ -n "$optList" ]
|
||||||
then
|
then
|
||||||
|
|
||||||
# List directories, or potential file locations
|
# List directories, or potential file locations
|
||||||
[ "$nArgs" -le 1 ] || usage
|
[ "$nArgs" -le 1 ] || \
|
||||||
|
die "-list expects 0 or 1 filename, but $nArgs provided"
|
||||||
|
|
||||||
# A silly combination, but -quiet does have precedence
|
# A silly combination, but -quiet does have precedence
|
||||||
[ -n "$optQuiet" ] && exit 0
|
[ -n "$optQuiet" ] && exit 0
|
||||||
|
|
||||||
for dir
|
# Test for directory or file too?
|
||||||
do
|
if [ "$optList" = "test" ]
|
||||||
|
then
|
||||||
|
exitCode=2 # Fallback to a general error (file not found)
|
||||||
|
|
||||||
if [ "$nArgs" -eq 1 ]
|
if [ "$nArgs" -eq 1 ]
|
||||||
then
|
then
|
||||||
echo "$dir/$fileName"
|
for dir
|
||||||
else
|
do
|
||||||
echo "$dir"
|
resolved="$dir/$fileName"
|
||||||
|
if [ -f "$resolved" ]
|
||||||
|
then
|
||||||
|
echo "$resolved"
|
||||||
|
exitCode=0 # OK
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
else
|
||||||
|
for dir
|
||||||
|
do
|
||||||
|
if [ -d "$dir" ]
|
||||||
|
then
|
||||||
|
echo "$dir"
|
||||||
|
exitCode=0 # OK
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
for dir
|
||||||
|
do
|
||||||
|
echo "$dir${fileName:+/}$fileName"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
[ "$nArgs" -eq 1 ] || usage
|
[ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided"
|
||||||
|
|
||||||
exitCode=2 # Fallback to a general error, eg file not found
|
exitCode=2 # Fallback to a general error (file not found)
|
||||||
|
|
||||||
for dir
|
for dir
|
||||||
do
|
do
|
||||||
@ -316,7 +413,6 @@ else
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
exit $exitCode
|
exit $exitCode
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
48
bin/foamExec
48
bin/foamExec
@ -26,7 +26,7 @@
|
|||||||
# foamExec
|
# foamExec
|
||||||
#
|
#
|
||||||
# Description
|
# Description
|
||||||
# Usage: foamExec [-v foamVersion] <foamCommand> ...
|
# Usage: foamExec [-version=foamVersion] <foamCommand> ...
|
||||||
#
|
#
|
||||||
# Runs the <foamVersion> version of executable <foamCommand>
|
# Runs the <foamVersion> version of executable <foamCommand>
|
||||||
# with the rest of the arguments.
|
# with the rest of the arguments.
|
||||||
@ -34,7 +34,7 @@
|
|||||||
# Can also be used for parallel runs. For example,
|
# Can also be used for parallel runs. For example,
|
||||||
# \code
|
# \code
|
||||||
# mpirun -np <nProcs> \
|
# mpirun -np <nProcs> \
|
||||||
# foamExec -version <foamVersion> <foamCommand> ... -parallel
|
# foamExec -version=VERSION <foamCommand> ... -parallel
|
||||||
# \endcode
|
# \endcode
|
||||||
#
|
#
|
||||||
# Note
|
# Note
|
||||||
@ -55,34 +55,29 @@ usage() {
|
|||||||
Usage: ${0##*/} [OPTION] <application> ...
|
Usage: ${0##*/} [OPTION] <application> ...
|
||||||
|
|
||||||
options:
|
options:
|
||||||
-prefix <dir> specify an alternative installation prefix
|
-mode=MODE Any combination of u(user), g(group), o(other)
|
||||||
|
-prefix=DIR Specify an alternative installation prefix
|
||||||
pass through to foamEtcFile and set as FOAM_INST_DIR
|
pass through to foamEtcFile and set as FOAM_INST_DIR
|
||||||
-version <ver> specify an alternative OpenFOAM version
|
-version=VER Specify alternative OpenFOAM version (eg, 3.0, 1612, ...)
|
||||||
pass through to foamEtcFile
|
pass through to foamEtcFile
|
||||||
-help print the usage
|
-help Print the usage
|
||||||
|
|
||||||
* run a particular OpenFOAM version of <application>
|
Run a particular OpenFOAM version of <APPLICATION>
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
binDir="${0%/*}" # The bin dir
|
||||||
|
projectDir="${binDir%/bin}" # The project dir
|
||||||
|
prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
|
||||||
|
|
||||||
# the bin dir:
|
## projectDirName="${projectDir##*/}" # The project directory name
|
||||||
binDir="${0%/*}"
|
|
||||||
|
|
||||||
# the project dir:
|
version="${WM_PROJECT_VERSION:-unknown}"
|
||||||
projectDir="${binDir%/bin}"
|
|
||||||
|
|
||||||
# the prefix dir (same as $FOAM_INST_DIR):
|
unset etcOpts
|
||||||
prefixDir="${projectDir%/*}"
|
|
||||||
|
|
||||||
# # the name used for the project directory
|
|
||||||
# projectDirName="${projectDir##*/}"
|
|
||||||
|
|
||||||
|
|
||||||
unset etcOpts version
|
|
||||||
# parse options
|
# parse options
|
||||||
while [ "$#" -gt 0 ]
|
while [ "$#" -gt 0 ]
|
||||||
do
|
do
|
||||||
@ -90,6 +85,17 @@ do
|
|||||||
-h | -help)
|
-h | -help)
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
|
-mode=*)
|
||||||
|
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||||
|
;;
|
||||||
|
-prefix=/*)
|
||||||
|
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||||
|
prefixDir="${1#*=}"
|
||||||
|
;;
|
||||||
|
-version=*)
|
||||||
|
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||||
|
version="${1#*=}"
|
||||||
|
;;
|
||||||
-m | -mode)
|
-m | -mode)
|
||||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||||
etcOpts="$etcOpts $1 $2" # pass-thru to foamEtcFile
|
etcOpts="$etcOpts $1 $2" # pass-thru to foamEtcFile
|
||||||
@ -127,15 +133,15 @@ done
|
|||||||
#
|
#
|
||||||
sourceRc()
|
sourceRc()
|
||||||
{
|
{
|
||||||
foamDotFile="$($binDir/foamEtcFile $etcOpts bashrc)" || {
|
rcFile="$($binDir/foamEtcFile $etcOpts bashrc)" || {
|
||||||
echo "Error : bashrc file could not be found for OpenFOAM-${version:-${WM_PROJECT_VERSION:-???}}" 1>&2
|
echo "Error : bashrc file could not be found for OpenFOAM-$version" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# set to consistent value before sourcing the bashrc
|
# set to consistent value before sourcing the bashrc
|
||||||
export FOAM_INST_DIR="$prefixDir"
|
export FOAM_INST_DIR="$prefixDir"
|
||||||
|
|
||||||
. $foamDotFile $FOAM_SETTINGS
|
. $rcFile $FOAM_SETTINGS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
# Use other (shipped) paraview with a different ParaView_VERSION
|
# Use other (shipped) paraview with a different ParaView_VERSION
|
||||||
#
|
#
|
||||||
|
|
||||||
set foamFile=`$WM_PROJECT_DIR/bin/foamEtcFile -mode o config.csh/paraview`
|
set foamFile=`$WM_PROJECT_DIR/bin/foamEtcFile -mode=o config.csh/paraview`
|
||||||
if ( $status == 0 ) source $foamFile ParaView_VERSION=5.0.1
|
if ( $status == 0 ) source $foamFile ParaView_VERSION=5.0.1
|
||||||
|
|
||||||
unset foamFile
|
unset foamFile
|
||||||
|
|||||||
Reference in New Issue
Block a user