3 # Hook used to indent files before commiting
10 if test -d ".git/rebase-merge" || \
11 test -d ".git/rebase-apply" || \
12 test -f ".git/MERGE_HEAD" || \
13 test -f ".git/CHERRY_PICK_HEAD" || \
14 test -f ".git/BISECT_LOG"
22 XMLINDENT="$(git config --get hooks.xmlindent)"
23 if test ! -x "$XMLINDENT"
25 echo "Unable to find xmlindent executable on the configuration."
27 echo "Please configure it with :"
28 echo " git config --global hooks.xmlindent C:/path/to/xmlindent"
30 echo " git config --global hooks.xmlindent /usr/bin/xmlindent"
34 if test -z "$(git config --get-all xmlindent.ignored)"
36 echo "Unable to find xmlindent ignored list on the configuration, ignored"
38 echo "You can configure it with :"
39 echo " git config --add xmlindent.ignored 'scilab/Visual-Studio-settings/*.xml' "
40 echo " git config --add xmlindent.ignored 'scilab/checkstyle/*.xml' "
45 XMLINDENT_IGNORED="$(find $(git config --get-all xmlindent.ignored))"
48 ASTYLE="$(git config --get hooks.astyle)"
49 if test ! -x "$ASTYLE"
51 echo "Unable to find astyle executable on the configuration."
53 echo "Please configure it with :"
54 echo " git config --global hooks.astyle C:/path/to/astyle"
56 echo " git config --global hooks.astyle /usr/bin/astyle"
60 if test -z "$(git config --get-all astyle.ignored)"
62 echo "Unable to find astyle ignored list on the configuration, ignored"
64 echo "You can configure it with :"
65 echo " git config --add astyle.ignored 'scilab/modules/*/src/jni/*.hxx' "
66 echo " git config --add astyle.ignored 'scilab/modules/*/src/jni/*.cpp' "
67 echo " git config --add astyle.ignored 'scilab/modules/*/src/jni/*.c' "
68 echo " git config --add astyle.ignored 'scilab/modules/javasci/src/java/org/scilab/modules/javasci/Call_Scilab*.java' "
69 echo " git config --add astyle.ignored 'scilab/modules/renderer/src/java/org/scilab/modules/renderer/FigureScilabCall*.java' "
70 echo " git config --add astyle.ignored 'scilab/modules/helptools/src/java/org/scilab/modules/helptools/SynopsisLexer.java' "
71 echo " git config --add astyle.ignored 'scilab/modules/helptools/src/java/org/scilab/modules/helptools/XML/XMLLexer.java' "
72 echo " git config --add astyle.ignored 'scilab/modules/helptools/src/java/org/scilab/modules/helptools/c/CLexer.java' "
73 echo " git config --add astyle.ignored 'scilab/modules/helptools/src/java/org/scilab/modules/helptools/java/JavaLexer.java' "
74 echo " git config --add astyle.ignored 'scilab/modules/helptools/src/java/org/scilab/modules/helptools/scilab/ScilabLexer.java' "
75 echo " git config --add astyle.ignored 'scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/FunctionScanner.java' "
76 echo " git config --add astyle.ignored 'scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/IndentScanner.java' "
77 echo " git config --add astyle.ignored 'scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/MatchingBlockScanner.java' "
78 echo " git config --add astyle.ignored 'scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/ScilabLexer.java' "
79 echo " git config --add astyle.ignored 'scilab/modules/xcos/src/java/org/scilab/modules/xcos/Controller.java' "
80 echo " git config --add astyle.ignored 'scilab/modules/xcos/src/java/org/scilab/modules/xcos/JavaController.java' "
81 echo " git config --add astyle.ignored 'scilab/modules/xcos/src/java/org/scilab/modules/xcos/Kind.java' "
82 echo " git config --add astyle.ignored 'scilab/modules/xcos/src/java/org/scilab/modules/xcos/ObjectProperties.java' "
83 echo " git config --add astyle.ignored 'scilab/modules/scicos/src/scicos_sundials/*' "
89 ASTYLE_IGNORED="$(find $(git config --get-all astyle.ignored))"
92 # indent / format file by type
95 # getting against as the current commit
96 if git rev-parse --verify HEAD >/dev/null 2>&1
100 # Initial commit: diff against an empty tree object
101 local against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
104 # get the modified files per kind filtering out ignored files and call the
105 # __indent_XXX helper
107 FILES=$(git diff --cached --name-only --diff-filter=ACM $against |grep -E "\.(xcos|xml|xsl)$" |grep -v -F "$XMLINDENT_IGNORED")
108 [ -z "$FILES" ] || __indent_xml;
110 FILES=$(git diff --cached --name-only --diff-filter=ACM $against |grep -E "\.(h|c|hxx|cpp)$" |grep -v -F "$ASTYLE_IGNORED")
111 [ -z "$FILES" ] || __indent_C;
113 FILES=$(git diff --cached --name-only --diff-filter=ACM $against |grep -E "\.java$" |grep -v -F "$ASTYLE_IGNORED")
114 [ -z "$FILES" ] || __indent_java;
116 FILES=$(git diff --cached --name-only --diff-filter=ACM $against |grep -E "\.(sce|sci|tst)$")
117 [ -z "$FILES" ] || __indent_scilab;
122 # Indent the file with xmlindent if this is an xcos file
124 if test ! -x "$XMLINDENT"
129 echo "Formatting" "$FILES"
130 "$XMLINDENT" -w -i 4 $FILES || return 2;
131 git add $FILES || return 3;
134 # Pre process before the indent
136 if test ! -x "$ASTYLE"
141 echo "Indenting" $FILES
145 # post process after the indent
150 COMMON_ASTYLE_ARGS="--pad-header --suffix=none --pad-oper --indent-col1-comments --indent-switches --indent=spaces=4 --add-brackets --formatted"
152 # Indent the file with `astyle' if this is a C/CPP file
154 __pre_indent || return 1
155 $ASTYLE $COMMON_ASTYLE_ARGS --style=bsd $FILES || return 2
156 __post_indent || return 3
160 # Indent the file with `astyle' if this is a Java file
162 __pre_indent || return 1
163 $ASTYLE $COMMON_ASTYLE_ARGS --style=java $FILES || return 2
164 __post_indent || return 3
168 # Indent the file with `scinotes' if this is a Scilab file
170 __pre_indent || return 1
172 TMPFILE="scinotes_indent.sce"
173 echo "files = [" >$TMPFILE
174 printf "'%s'\n" $FILES >>$TMPFILE
177 echo "scinotes(files, ['indent','trailing','quote'])" >>$TMPFILE
178 echo "exit(0)" >>$TMPFILE
180 if test -f scilab/scilab-bin; then
181 scilab/bin/scilab -nw -f $TMPFILE || return 2
183 if test -f scilab/bin/WScilex.exe; then
184 scilab/bin/scilex.exe -f $TMPFILE || return 2
186 echo "Scilab has not been built."
193 __post_indent || return 3