diff --git a/bin/foamCleanCase b/bin/foamCleanCase new file mode 100755 index 0000000000..c2d5ab5caa --- /dev/null +++ b/bin/foamCleanCase @@ -0,0 +1,84 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | Website: https://openfoam.org +# \\ / A nd | Copyright (C) 2021 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 . +# +# Script +# foamCleanCase +# +# Description +# Cleans an OpenFOAM case directory, resetting it to its initial state. +# Executes a local Allclean script if it present, otherwise runs the +# cleanCase function in bin/tools/CleanFunctions +# +#------------------------------------------------------------------------------ + +# Source tutorial clean functions +. "$WM_PROJECT_DIR/bin/tools/CleanFunctions" + +usage() { + cat< specify case directory (default = local dir) + -help | -h print the usage + +Cleans an OpenFOAM case directory, resetting it to its initial state. +USAGE +} + +error() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + usage + exit 1 +} + +# Parse options +while [ "$#" -gt 0 ] +do + case "$1" in + -c | -case) + [ "$#" -ge 2 ] || error "'$1' option requires an argument" + cd "$2" 2>/dev/null || error "Case directory does not exist: '$2'" + shift 2 + ;; + -h | -help) + usage && exit 0 + ;; + *) + break + ;; + esac +done + +[ $# -eq 0 ] || error "Incorrect arguments specified" + +foamListTimes >/dev/null 2>&1 || \ + error "'$PWD' is not a valid case directory" + +[ -x Allclean ] && ./Allclean && \ + echo "... using the local Allclean script" && exit 0 +cleanCase + +#------------------------------------------------------------------------------ diff --git a/bin/foamCleanTutorials b/bin/foamCleanTutorials index 3d8b29e4bf..bad83ec260 100755 --- a/bin/foamCleanTutorials +++ b/bin/foamCleanTutorials @@ -39,11 +39,17 @@ Script=$0 usage() { cat< options: -help | -h print the usage -Helper script used by the Allclean scripts in the OpenFOAM tutorials +Script to clean tutorial cases called by the Allclean scripts in the OpenFOAM +tutorials. The script executes recursively on sub-directories to clean all +cases. Recursive execution is disabled for the top level Allclean or Allwclean +scripts by supplying a dummy argument when executing, e.g. + +./${0##*/} cases + USAGE } @@ -60,26 +66,28 @@ do esac done -# If an argument is supplied do not execute ./Allwclean or ./Allclean -# (to avoid recursion) -if [ $# -eq 0 -a -f Allwclean ] +# Specialised ./Allwclean script, do not execute if argument is supplied +if [ $# -eq 0 ] && [ -f Allwclean ] then - # Specialised script ./Allwclean -elif [ $# -eq 0 -a -f Allclean ] + +# Specialised ./Allclean script, do not execute if argument is supplied +elif [ $# -eq 0 ] && [ -f Allclean ] then - # Specialised script ./Allclean + +# For a case directory without Allclean, use the cleanCase function elif [ -d system ] then - # Normal case cleanCase + +# For a code directory without Allwclean, use the cleanApplication function elif [ -d Make ] then - # Normal application cleanApplication + +# Otherwise loop over sub-directories and execute script within each one else - # Recurse into subdirectories for caseName in * do ( cd "$caseName" 2>/dev/null && $Script )