From 8429569091861a439f3aa6a4da8f1cbbd46809f3 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Sun, 13 Dec 2015 20:55:24 +0000 Subject: [PATCH] wclean: Added the target "empty", which removes empty directories It will exit after removing the empty folders and it will not do the other standard "wclean" operations. This replaces the functionality provided by "wrmdepold". Patch provided by Bruno Santos --- wmake/wclean | 45 +++++++++++----- wmake/wrmdepold | 133 ------------------------------------------------ 2 files changed, 32 insertions(+), 146 deletions(-) delete mode 100755 wmake/wrmdepold diff --git a/wmake/wclean b/wmake/wclean index 28e2621bcc..373b76c70e 100755 --- a/wmake/wclean +++ b/wmake/wclean @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -40,17 +40,18 @@ Usage: $Script [OPTION] [dir] $Script [OPTION] target [dir [MakeDir]] options: - -s | -silent ignored - for compatibility with wmake - -help print the usage + -s | -silent Ignored - for compatibility with wmake + -help Print the usage Clean up the wmake control directory Make/\$WM_OPTIONS and remove the lnInclude directories generated for libraries. The targets correspond to a subset of the 'wmake' special targets: - all all subdirectories, uses any Allwclean or Allclean + all All subdirectories, uses any Allwclean or Allclean files if they exist exe | lib | libo | libso - clean Make, any *.dep files and lnInclude directories + Clean Make, any *.dep files and lnInclude directories + empty Remove empty sub-directories for the requested dir USAGE exit 1 @@ -67,7 +68,7 @@ do -h | -help) usage ;; - -s | -silent) # ignored - for compatibility with wmake + -s | -silent) # Ignored - for compatibility with wmake shift ;; -*) @@ -81,7 +82,7 @@ done #------------------------------------------------------------------------------ -# check arguments and change to the directory in which to run wclean +# Check arguments and change to the directory in which to run wclean #------------------------------------------------------------------------------ unset dir targetType @@ -97,10 +98,10 @@ then targetType=$1 fi - # specified directory name: + # Specified directory name: [ $# -ge 2 ] && dir=$2 - # specified alternative name for the Make sub-directory: + # Specified alternative name for the Make sub-directory: [ $# -ge 3 ] && MakeDir=$3 if [ "$dir" ] @@ -111,22 +112,40 @@ then } fi - # provide some feedback + # Provide some feedback echo "$Script ${dir:-./}" fi +#------------------------------------------------------------------------------ +# Remove empty sub-directories and exit +#------------------------------------------------------------------------------ + +if [ "$targetType" = empty ] +then + # Get sub-directories avoiding particular directories + for dir in $(find . -mindepth 1 -maxdepth 1 \ + -type d \( -name .git -prune -o -print \) ) + do + echo "check dir: $dir" + find $dir -depth -type d -empty -exec rmdir {} \; -print + done + + exit 0 +fi + + #------------------------------------------------------------------------------ # Recurse the directories tree #------------------------------------------------------------------------------ if [ "$targetType" = all ] then - if [ -e Allwclean ] # consistent with Allwmake + if [ -e Allwclean ] # Consistent with Allwmake then ./Allwclean exit $? - elif [ -e Allclean ] # often used for tutorial cases + elif [ -e Allclean ] # Often used for tutorial cases then ./Allclean exit $? @@ -135,7 +154,7 @@ then for dir in `find . \( -type d -a -name Make \)` do echo $dir - $0 ${dir%/Make} # parent directory - trim /Make from the end + $0 ${dir%/Make} # Parent directory - trim /Make from the end done fi fi diff --git a/wmake/wrmdepold b/wmake/wrmdepold deleted file mode 100755 index 61cdc92bc0..0000000000 --- a/wmake/wrmdepold +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# ========= | -# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox -# \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2015 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 -# wrmdepold -# -# Description -# Usage: wrmdepold [dir1 .. dirN] -# -# Remove *.dep files that are without a corresponding .C or .L source file. -# This often occurs when a directory has been moved. -# - print questionable directory and the *.dep file -# - optionally remove empty directories -#------------------------------------------------------------------------------ -Script=${0##*/} - -# Source the wmake functions -. ${0%/*}/scripts/wmakeFunctions - -usage() { - exec 1>&2 - while [ "$#" -ge 1 ]; do echo "$1"; shift; done - cat</dev/null - fi - done - - # Remove empty dirs - if [ "$optRmdir" ] - then - # get subdirs ourselves so we can avoid particular directories - for dir in $(find $objectsDir -mindepth 1 -maxdepth 1 -type d \( -name .git -prune -o -print \) ) - do - echo "check dir: $dir" - find $dir -depth -type d -empty -exec rmdir {} \; -print - done - fi -done - - -# -----------------------------------------------------------------------------