Skip to content
Snippets Groups Projects
foamUpdateCaseFileHeader 3.81 KiB
Newer Older
henry's avatar
henry committed
#!/bin/sh
#------------------------------------------------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 1991-2008 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 version in the header.
Mark Olesen's avatar
Mark Olesen committed
  An alternative version can be specified with -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}  |
henry's avatar
henry committed
|   \\\\  /    A nd           | Web:      http://www.OpenFOAM.org               |
|    \\\\/     M anipulation  |                                                 |
\\*---------------------------------------------------------------------------*/
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
#
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
henry's avatar
henry committed
fi
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
foamVersion=`printf %-36s $foamVersion`

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

        CLASS=`FoamFileAttribute class FoamFile.tmp`
        OBJECT=`FoamFileAttribute object FoamFile.tmp`
        FORMAT=`FoamFileAttribute format FoamFile.tmp`

        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
        rm FoamFile.tmp
    else
        echo " Invalid case file: $caseFile" 1>&2
    fi
Mark Olesen's avatar
Mark Olesen committed
done
henry's avatar
henry committed

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