Skip to content
Snippets Groups Projects
foamUpdateCaseFileHeader 3.88 KiB
Newer Older
henry's avatar
henry committed
#!/bin/sh
#------------------------------------------------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
Mark Olesen's avatar
Mark Olesen committed
#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
henry's avatar
henry committed
#    \\/     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 2 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, write to the Free Software Foundation,
#     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Script
#     foamUpdateCaseFileHeader
#
# Description
#     Updates the header of application files.
#     By default, writes current version in the header.
#     Alternatively version can be specified with -v option.
#     Also removes consecutive blank lines from file.
#
#------------------------------------------------------------------------------
Mark Olesen's avatar
Mark Olesen committed
foamVersion=$WM_PROJECT_VERSION
Mark Olesen's avatar
Mark Olesen committed
usage() {
Mark Olesen's avatar
Mark Olesen committed
    cat<<USAGE
Mark Olesen's avatar
Mark Olesen committed

usage: ${0##*/} [OPTION] <file1> ... <fileN>

options:
Mark Olesen's avatar
Mark Olesen committed
  -v VER  specifies the version to be written in the header
  -h      help
Mark Olesen's avatar
Mark Olesen committed

Mark Olesen's avatar
Mark Olesen committed
  Updates the header of application files and removes consecutive blank lines.
Mark Olesen's avatar
Mark Olesen committed
  By default, writes current OpenFOAM version in the header.
  An alternative version can be specified with the -v option.
Mark Olesen's avatar
Mark Olesen committed

USAGE
Mark Olesen's avatar
Mark Olesen committed
    exit 1
Mark Olesen's avatar
Mark Olesen committed

printHeader() {
Mark Olesen's avatar
Mark Olesen committed
    cat<<HEADER
henry's avatar
henry committed
/*--------------------------------*- C++ -*----------------------------------*\\
| =========                 |                                                 |
| \\\\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
Mark Olesen's avatar
Mark Olesen committed
|  \\\\    /   O peration     | Version:  ${foamVersion}  |
Mark Olesen's avatar
Mark Olesen committed
|   \\\\  /    A nd           |                                                 |
|    \\\\/     M anipulation  |                                www.OpenFOAM.org |
henry's avatar
henry committed
\\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
Mark Olesen's avatar
Mark Olesen committed
    format      ${1};
    class       ${2};
    object      ${3};
Mark Olesen's avatar
Mark Olesen committed
HEADER
Mark Olesen's avatar
Mark Olesen committed

#
# extract attribute '$1' from file '$2'
#
FoamFileAttribute() {
Mark Olesen's avatar
Mark Olesen committed
    sed -n -e 's/[ ;]*$//' -e "s/^ *$1 *//p" $2
Mark Olesen's avatar
Mark Olesen committed

henry's avatar
henry committed
#
# OPTIONS
#
Mark Olesen's avatar
Mark Olesen committed
opts=$(getopt hv: $*)
Mark Olesen's avatar
Mark Olesen committed
if [ $? -ne 0 ]
then
Mark Olesen's avatar
Mark Olesen committed
    echo "Aborting due to invalid option"
    usage
Mark Olesen's avatar
Mark Olesen committed
eval set -- '$opts'
Mark Olesen's avatar
Mark Olesen committed
while [ "$1" != "--" ]
do
Mark Olesen's avatar
Mark Olesen committed
    case $1 in
    -v)
        foamVersion=$2
        shift
        ;;
    -h)
        usage
        ;;
    esac
    shift
Mark Olesen's avatar
Mark Olesen committed
[ $# -ge 1 ] || usage


# constant width for version
Mark Olesen's avatar
Mark Olesen committed
foamVersion=$(printf %-36s $foamVersion)
Mark Olesen's avatar
Mark Olesen committed

Mark Olesen's avatar
Mark Olesen committed
unset NOTE

Mark Olesen's avatar
Mark Olesen committed
for caseFile
do
Mark Olesen's avatar
Mark Olesen committed
    if grep FoamFile $caseFile >/dev/null 2>&1
    then
        echo "Updating case file: $caseFile"
        sed -n '/FoamFile/,/}/p' $caseFile > FoamFile.tmp

Mark Olesen's avatar
Mark Olesen committed
        FORMAT=$(FoamFileAttribute format FoamFile.tmp)
        CLASS=$(FoamFileAttribute  class  FoamFile.tmp)
        OBJECT=$(FoamFileAttribute object FoamFile.tmp)
        # extract NOTE?
Mark Olesen's avatar
Mark Olesen committed

        printHeader $FORMAT $CLASS $OBJECT $NOTE > FoamFile.tmp
        sed '1,/}/d' $caseFile | sed '/./,/^$/!d' >> FoamFile.tmp

        # use cat to avoid removing/replace soft-links
        [ -s FoamFile.tmp ] && cat FoamFile.tmp >| $caseFile
Mark Olesen's avatar
Mark Olesen committed
        rm -f FoamFile.tmp 2>/dev/null
Mark Olesen's avatar
Mark Olesen committed
    else
        echo " Invalid case file: $caseFile" 1>&2
    fi
Mark Olesen's avatar
Mark Olesen committed
done
henry's avatar
henry committed

#------------------------------------------------------------------------------