bin/checkFile

Summary

Maintainability
Test Coverage
#!/bin/bash
# checkFile
#
#    Purpose:
#        
#    Description:
#        
#    History:
#        Thu Nov 17 09:43:23 TST 2011, Created by jumperchen
#
#Copyright (C) 2011 Potix Corporation. All Rights Reserved.
#
if [ $# != 2 ] && [ $# != 4 ] ; then
    echo Please specify two files or two folders
    echo for example,
    echo ./bin/checkFile folder1 folder2
    echo To replace version number in each file/folder, put version number in front of the file/folder names
    echo for example,
    echo ./bin/checkFile 6.0.0 folder1 6.0.1 folder2
    exit 1
fi

if [ $# != 4 ] ; then
    folder1=$1
    folder2=$2
else
    ver1=$1
    folder1=$2
    ver2=$3
    folder2=$4
fi

if [ ! -d "$folder1" ] && [ ! -f "$folder1" ] ; then
    echo $folder1 is not a file or folder
    exit 1
fi
if [ ! -d "$folder2" ] && [ ! -f "$folder2" ] ; then
    echo $folder2 is not a file or folder
    exit 1
fi

maindir="$(pwd)"
tmpdir="$maindir"
os="$(uname)"

if [ $os == "Darwin" ]; then
    tmpdir=$TMPDIR
fi

tmp1="checktmp1"
tmp2="checktmp2"
function checkFile {
    echo $(pwd)/$1
    #echo "List file name $(pwd)/$1" >> $maindir//$2.log
    result=$(echo "$1" | awk '/tar.gz$/{print "yes"}')
    if [ "$result" != "yes" ] ; then
        unzip -ql $1 | awk '{print $4}' | sort >> $tmpdir/$2.log
    else
        tar -tf $1 | sort >> $tmpdir//$2.log
    fi
}
function listFile {
    for f in `ls | sort`; do
        if [ ! -d "$f" ] ; then
            result=$(echo "$f" | awk '/.md5$/{print "yes"}')
            if [ "$result" != "yes" ] ; then
                checkFile "$f" "$1"
            fi
        else
            cd "$f"
            listFile "$1"
            cd ..
        fi
    done
}

if [ -f "$maindir/$tmp1.log" ] ; then
    rm $maindir/$tmp1.log
fi
if [ -f "$maindir/$tmp2.log" ] ; then
    rm $maindir/$tmp2.log
fi

if [ ! -d "$folder1" ] ; then
    checkFile "$folder1" "$tmp1"
else
    cd "$folder1"
    listFile "$tmp1"
fi

if [ ! -d "$folder2" ] ; then
    checkFile "$folder2" "$tmp2"
else
    cd "$folder2"
    listFile "$tmp2"
fi

cd $tmpdir

if [ $# != 2 ] ; then
    sed -i "s/$ver1/{VER}/g" $tmp1.log
    sed -i "s/$ver2/{VER}/g" $tmp2.log
fi

diff $tmp1.log $tmp2.log
if [ $? != 0 ] ; then
    if [ -f TortoiseMerge.exe ] ; then
        TortoiseMerge.exe $tmp1.log $tmp2.log
    elif [ $os == "Darwin" ]; then
        opendiff $tmp1.log $tmp2.log
    else 
        vimdiff $tmp1.log $tmp2.log
    fi

else
    echo "All files are matched!"
fi

if [ $os != "Darwin" ]; then
    rm $tmp1.log
    rm $tmp2.log
fi