Skip to content
Snippets Groups Projects
foamUpdateCaseFileHeader 3.81 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    
    #------------------------------------------------------------------------------