of() { if [[ $# -eq 1 && "$1" == "status" ]]; then if [[ -n "$WM_PROJECT_DIR" ]]; then echo "✅ OpenFOAM is active" echo "📂 WM_PROJECT_DIR: $WM_PROJECT_DIR" echo "📂 WM_PROJECT_USER_DIR: $WM_PROJECT_USER_DIR" echo "đŸ”ĸ Version: ${WM_PROJECT_VERSION:-unknown}" else echo "â„šī¸ No OpenFOAM environment is currently active" fi return 0 fi if [[ $# -lt 1 || $# -gt 2 ]]; then cat < [version] of status # Show current OpenFOAM environment Examples: of com 2506 # Activate OpenFOAM.com v2506 of org 13 # Activate OpenFOAM.org v13 of com # Picks up latest OpenFOAM.com of org # Picks latest numeric OpenFOAM.org EOF return 1 fi if [[ -n "$WM_PROJECT_DIR" ]]; then echo "â„šī¸ OpenFOAM already sourced: $WM_PROJECT_DIR" return 0 fi local branch="$1" version="$2" OFpath find_latest_version() { local dir="$1" prefix="$2" [[ ! -d "$dir" ]] && return 1 ls -1 "$dir" 2>/dev/null | grep -E "^${prefix}[0-9]+" | grep -oE '[0-9]+' | sort -n | tail -n1 } case "$branch" in com) if [[ -n "$version" ]]; then OFpath="/usr/lib/openfoam/openfoam${version}/etc/bashrc" else version="$(find_latest_version /usr/lib/openfoam openfoam)" [[ -z "$version" ]] && { echo "❌ No OpenFOAM.com found in /usr/lib/openfoam" >&2; return 1; } OFpath="/usr/lib/openfoam/openfoam${version}/etc/bashrc" fi ;; org) if [[ -n "$version" ]]; then OFpath="/opt/openfoam${version}/etc/bashrc" [[ ! -f "$OFpath" ]] && OFpath="/opt/${version}/etc/bashrc" else version="$(find_latest_version /opt openfoam)" [[ -z "$version" ]] && { echo "❌ No OpenFOAM.org found in /opt" >&2; return 1; } OFpath="/opt/openfoam${version}/etc/bashrc" fi ;; *) echo "❌ Invalid option: '$branch' (use 'com' or 'org')" >&2 return 1 ;; esac [[ ! -f "$OFpath" ]] && { echo "❌ bashrc not found at $OFpath" >&2; return 1; } # WSL-aware WM_PROJECT_USER_DIR if [[ -d /mnt/c ]]; then win_user="$(/mnt/c/Windows/System32/cmd.exe /c 'echo %USERNAME%' | tr -d '\r')" export WM_PROJECT_USER_DIR="/mnt/c/Users/${win_user}/openfoam-data/${USER}-${version}" else export WM_PROJECT_USER_DIR="${HOME}/openfoam-data/${USER}-${version}" fi if source "$OFpath" WM_PROJECT_USER_DIR="$WM_PROJECT_USER_DIR"; then echo "✅ Activated OpenFOAM ($branch $version)" echo "📂 WM_PROJECT_USER_DIR=\"$WM_PROJECT_USER_DIR\"" else echo "❌ Failed to source $OFpath" >&2 return 1 fi }