source: tags/ms_r16q3/SOURCE_TOOLS/check_dirs_equal.sh

Last change on this file was 14655, checked in by westram, 8 years ago
  • spelling
  • Property svn:executable set to *
File size: 2.8 KB
Line 
1#!/bin/bash
2
3SED=${ARBHOME}/SH/arb_sed
4
5check_existence_in() {
6    local OTHER=$1
7    local FILE=$2
8    local RESULT=true
9
10    while [ ! -z "$FILE" ]; do
11        if [ ! -e $OTHER/$FILE ]; then
12            echo "$OTHER/$FILE:0: Error: has not been generated"
13            RESULT=false
14        fi
15        shift
16        FILE=$2
17    done
18    $RESULT
19}
20
21check_equality() {
22    local OLDDIR=$1
23    local NEWDIR=$2
24    local NAME=$3
25    local RESULT=true
26
27    while [ ! -z "$NAME" ]; do
28        local OLDFILE=$OLDDIR/$NAME
29        local NEWFILE=$NEWDIR/$NAME
30
31        if [ ! -d $OLDFILE -a ! -d $NEWFILE ]; then
32            local OPTIONS=
33            OPTIONS="$OPTIONS --unified=3"
34            OPTIONS="$OPTIONS --ignore-tab-expansion"
35            OPTIONS="$OPTIONS --ignore-space-change"
36            OPTIONS="$OPTIONS --ignore-blank-lines"
37            OPTIONS="$OPTIONS --ignore-all-space"
38            OPTIONS="$OPTIONS"
39
40            local TMPFILE=/tmp/check_dirs_equal.$$
41
42            diff $OPTIONS $OLDFILE $NEWFILE > $TMPFILE
43
44            local ISDIFF=`wc -l <$TMPFILE`
45            if [ "$ISDIFF" != "0" ]; then
46                echo "-------------------- diff start"
47                $ARBHOME/SOURCE_TOOLS/diff2grep.pl < $TMPFILE 
48                echo "-------------------- diff end"
49                RESULT=false
50            fi
51
52            rm $TMPFILE
53        fi
54        shift
55        NAME=$3
56    done
57    $RESULT
58}
59
60get_files() {
61    # returns relative paths of files matching WILDCARD
62    local DIR=$1
63    local WILDCARD=$2
64    ( \
65        cd $DIR || exit; \
66        find -P . -name "$WILDCARD" \
67        | grep -v '\/\.svn\/' \
68        | grep -v '\/patches\.arb\/' \
69        | $SED 's/^\.\///' \
70        )
71}
72
73check_missing() {
74    local D1=$1
75    local D2=$2
76    local WILDCARD="$3"
77
78    local FILES1=`get_files $D1 "$WILDCARD"`
79    local FILES2=`get_files $D2 "$WILDCARD"`
80
81    local RESULT=true
82   
83    check_existence_in $D2 $FILES1 || RESULT=false
84    check_existence_in $D1 $FILES2 || RESULT=false
85
86    $RESULT
87}
88
89compare_dirs() {
90    local NEWDIR=$1
91    local OLDDIR=$2
92    local WILDCARD="$3"
93
94    local NEWFILES=`get_files $NEWDIR "$WILDCARD"`
95
96    local RESULT=true
97   
98    check_missing $NEWDIR $OLDDIR "$WILDCARD" || RESULT=false
99    check_equality $OLDDIR $NEWDIR $NEWFILES || RESULT=false
100
101    $RESULT
102}
103
104# --------------------
105
106GLOBAL_NEWDIR=$1
107GLOBAL_OLDDIR=$2
108GLOBAL_WILDCARD="$3"
109
110if [ -z "$GLOBAL_WILDCARD" ]; then
111    echo "Usage: check_dirs_equal.sh newdir olddir wildcard"
112    echo "Recursively compares two directory-trees"
113    false
114else
115    cd $GLOBAL_NEWDIR || exit
116    GLOBAL_NEWDIR=`pwd`
117    cd - >/dev/null
118    cd $GLOBAL_OLDDIR || exit
119    GLOBAL_OLDDIR=`pwd`
120    cd - >/dev/null
121
122    # echo "GLOBAL_NEWDIR='$GLOBAL_NEWDIR'"
123    # echo "GLOBAL_OLDDIR='$GLOBAL_OLDDIR'"
124   
125    compare_dirs $GLOBAL_NEWDIR $GLOBAL_OLDDIR "$GLOBAL_WILDCARD" 
126fi
127
Note: See TracBrowser for help on using the repository browser.