diff --git a/bin/foamEtcFile b/bin/foamEtcFile index 9ea5b73f7d4c2d979e06fee4f9cd3cfd919a0f5a..f071c6ff54a89e83911e8026189ec96fd5438c75 100755 --- a/bin/foamEtcFile +++ b/bin/foamEtcFile @@ -50,8 +50,8 @@ usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<USAGE -Usage: ${0##*/} [OPTION] fileName - ${0##*/} [OPTION] -list +Usage: foamEtcFile [OPTION] fileName + foamEtcFile [OPTION] -list options: -a, -all return all files (otherwise stop after the first match) -l, -list list the directories to be searched @@ -93,20 +93,24 @@ prefixDir="${projectDir%/*}" # The name used for the project directory projectDirName="${projectDir##*/}" -# versionNum used for debian packaging -unset version versionNum +# The versionNum is used for debian packaging +unset versionNum # -# Handle standard and debian naming conventions -# - set version (always) and versionNum (debian only) +# Handle standard and debian naming conventions. +# - projectDirBase: projectDirName without the version +# - version +# - versionNum (debian only) # case "$projectDirName" in -OpenFOAM-*) # standard naming: OpenFOAM-<VERSION> - version="${projectDirName##OpenFOAM-}" +OpenFOAM-* | openfoam-*) # OpenFOAM-<VERSION> or openfoam-<VERSION> + projectDirBase="${projectDirName%%-*}-" + version="${projectDirName#*-}" ;; -openfoam[0-9]* | openfoam-dev) # debian naming: openfoam<VERSION> - versionNum="${projectDirName##openfoam}" +openfoam[0-9]*) # Debian: openfoam<VERSION> + projectDirBase="openfoam" + versionNum="${projectDirName#openfoam}" case "${#versionNum}" in (2|3|4) # Convert digits version number to decimal delineated version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g') @@ -120,12 +124,24 @@ openfoam[0-9]* | openfoam-dev) # debian naming: openfoam<VERSION> ;; *) - echo "${0##*/} Error : unknown/unsupported naming convention" 1>&2 + echo "foamEtcFile error: unknown/unsupported naming convention" 1>&2 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' mode=ugo unset optAll optList optShell @@ -150,19 +166,14 @@ do unset optAll ;; -mode=[ugo]*) - mode="${1#-mode=}" + mode="${1#*=}" ;; -prefix=/*) - prefixDir="${1#-prefix=}" + prefixDir="${1#*=}" prefixDir="${prefixDir%/}" ;; -version=*) - version="${1#-version=}" - # convert x.y.z -> xyz version (if installation looked like debian) - if [ -n "$versionNum" ] - then - versionNum=$(echo "$version" | sed -e 's@\.@@g') - fi + setVersion "${1#*=}" ;; -m | -mode) mode="$2" @@ -189,12 +200,7 @@ do ;; -v | -version) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" - version="$2" - # convert x.y.z -> xyz version (if installation looked like debian) - if [ -n "$versionNum" ] - then - versionNum=$(echo "$version" | sed -e 's@\.@@g') - fi + setVersion "$2" shift ;; --) @@ -212,18 +218,13 @@ do done # Update projectDir accordingly -if [ -n "$versionNum" ] -then - projectDir="$prefixDir/openfoam$versionNum" # debian -else - projectDir="$prefixDir/${WM_PROJECT:-OpenFOAM}-$version" # standard -fi +projectDir="$prefixDir/$projectDirName" -# debugging: -# echo "Installed locations:" +# Debugging: +# echo "Installed locations:" 1>&2 # for i in projectDir prefixDir projectDirName version versionNum # do -# eval echo "$i=\$$i" +# eval echo "$i=\$$i" 1>&2 # done @@ -234,19 +235,19 @@ fileName="${1#~OpenFOAM/}" # Define the various places to be searched: unset dirList -case "$mode" in (*u*) # user +case "$mode" in (*u*) # (U)ser dir="$HOME/.${WM_PROJECT:-OpenFOAM}" dirList="$dirList $dir/$version $dir" ;; esac -case "$mode" in (*g*) # group (site) +case "$mode" in (*g*) # (G)roup == site dir="${WM_PROJECT_SITE:-$prefixDir/site}" dirList="$dirList $dir/$version $dir" ;; esac -case "$mode" in (*o*) # other (shipped) +case "$mode" in (*o*) # (O)ther == shipped dirList="$dirList $projectDir/etc" ;; esac @@ -261,10 +262,10 @@ exitCode=0 if [ "$optList" = true ] then - # list directories, or potential file locations + # List directories, or potential file locations [ "$nArgs" -le 1 ] || usage - # a silly combination, but -quiet does have precedence + # A silly combination, but -quiet does have precedence [ -n "$optQuiet" ] && exit 0 for dir @@ -281,8 +282,7 @@ else [ "$nArgs" -eq 1 ] || usage - # general error, eg file not found - exitCode=2 + exitCode=2 # Fallback to a general error, eg file not found for dir do