]> arthur.barton.de Git - netdata.git/blob - packaging/check-files
Merge pull request #277 from jgeromero/tomcat.chart.sh
[netdata.git] / packaging / check-files
1 #!/bin/bash
2
3 #
4 # check-files
5 #
6 scriptname=check-files
7 if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
8 then
9             echo >&2
10             echo >&2
11             echo >&2 "Cannot create temporary directory."
12             echo >&2
13             exit 1
14 fi
15
16 cleanup() {
17   status=$?
18   rm -rf "${MYTMP}"
19   exit $status
20 }
21
22 # clean up if we get stopped by Crtl-C or forced logout or normal exit
23 trap cleanup INT
24 trap cleanup HUP
25 trap cleanup 0
26
27 set -e
28 if [ "$1" = "--debug" ]
29 then
30   set -x
31   shift
32 fi
33
34 if [ $# -lt 1 ]
35 then
36   echo "check-files [--debug] -|filenames"
37   echo "e.g."
38   echo "  git diff | ./packaging/check-files -"
39   echo "or in .git/hooks/pre-commit:"
40   echo "  exec git diff --cached | ./packaging/check-files -"
41   exit 1
42 fi
43
44 if [ ! -x packaging/check-files ]
45 then
46   echo "Must be run from base directory"
47   exit 1
48 fi
49
50 if [ "$1" = "-" ]
51 then
52   from_cache=Y
53   f=""
54 else
55   from_cache=
56   for f in "$@"
57   do
58     if [ ! -f "$f" ]
59     then
60       echo "$f: no such file"
61       exit 1
62     fi
63   done
64
65   git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
66
67   while read missing
68   do
69      git update-index --add --cacheinfo \
70           100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
71   done < $MYTMP/missing.lst
72
73   empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
74   git diff $empty_tree -- "$@" > $MYTMP/diff.full
75   f=$MYTMP/diff.full
76
77   while read missing
78   do
79      git update-index --force-remove $missing
80   done < $MYTMP/missing.lst
81 fi
82
83 > $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
84
85 #cat $MYTMP/diff.lst
86 #cat $MYTMP/files.lst
87
88 dirname="${0%/*}"
89 if [ "$dirname" = "$0" ]; then dirname="."; fi
90
91 for i in $dirname/*.functions $dirname/*/*.functions
92 do
93   if [ -f "$i" ]
94   then
95     source $i
96     echo $i | sed -e 's:.*/::' -e 's/\.functions$//' -e 's/\./_/g' >> $MYTMP/fns
97   fi
98 done
99
100 status=0
101 while read fn
102 do
103   "${fn}_check_init" $filename || status=1
104 done < $MYTMP/fns
105
106 while read filename
107 do
108   #echo Checking $filename
109   while read fn
110   do
111     if [ $status -eq 0 ]
112     then
113       "${fn}_check_file" $filename || status=1
114     fi
115   done < $MYTMP/fns
116 done < $MYTMP/files.lst
117
118 if [ $status -eq 0 ]
119 then
120   while read fn
121   do
122     "${fn}_check_fin" $filename || status=1
123   done < $MYTMP/fns
124 fi
125
126 exit $status