From e1fc03a2454767e5d8f9abe8ca7746b1e3dcfbf9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Wed, 24 Oct 2012 23:06:07 +0200
Subject: Only check tabs & copyright of committed files.

Change-Id: Iba37ecbf03bab9e23a1ee9c72b39ee4266ec4032

diff --git a/BuildTools/CheckTabs.py b/BuildTools/CheckTabs.py
index c685fc4..e007a68 100755
--- a/BuildTools/CheckTabs.py
+++ b/BuildTools/CheckTabs.py
@@ -4,38 +4,28 @@ import os, sys
 
 foundExpandedTabs = False
 
-for (path, dirs, files) in os.walk(".") :
-	if not "3rdParty" in path and not ".sconf" in path and not ".framework" in path and not path.startswith("build") :
-		for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file] :
-			file = open(filename, "r")
-			contents = []
-			contentsChanged = False
-			for line in file.readlines() :
-				newline = ""
-				previousChar = None
-				pastInitialSpace = False
-				for char in line :
-					if not pastInitialSpace :
-						if char == ' ' and previousChar == ' ' :
-							contentsChanged = True
-							previousChar = '\t'
-							continue
-						pastInitialSpace = (char != ' ')
-					if previousChar :
-						newline += previousChar
-					previousChar = char
-				if previousChar :
-					newline += previousChar
-				contents.append(newline)
-			file.close()
-			if contentsChanged :
-				if len(sys.argv) > 1 and sys.argv[1] == "--fix" :
-					print("Fixing tabs in " + filename)
-					file = open(filename, "w")
-					file.write(''.join(contents))
-					file.close()
-				else :
-					foundExpandedTabs = True
-					print(filename + " contains expanded tabs")
-
-sys.exit(foundExpandedTabs)
+filename = sys.argv[1]
+if (filename.endswith(".cpp") or filename.endswith(".h")) and not "3rdParty" in filename : 
+  file = open(filename, "r")
+  contents = []
+  contentsChanged = False
+  for line in file.readlines() :
+    newline = ""
+    previousChar = None
+    pastInitialSpace = False
+    for char in line :
+      if not pastInitialSpace :
+        if char == ' ' and previousChar == ' ' :
+          contentsChanged = True
+          previousChar = '\t'
+          continue
+        pastInitialSpace = (char != ' ')
+      if previousChar :
+        newline += previousChar
+      previousChar = char
+    if previousChar :
+      newline += previousChar
+    contents.append(newline)
+  file.close()
+  if contentsChanged :
+    sys.exit(-1)
diff --git a/BuildTools/Copyrighter.py b/BuildTools/Copyrighter.py
index 248873b..ccb2019 100755
--- a/BuildTools/Copyrighter.py
+++ b/BuildTools/Copyrighter.py
@@ -129,29 +129,14 @@ def set_copyright(filename, copyright) :
   file.close()
 
 if sys.argv[1] == "check-copyright" :
-  if not check_copyright(sys.argv[2]) :
-    sys.exit(-1)
-elif sys.argv[1] == "check-all-copyrights" :
-  ok = True
-  for (path, dirs, files) in os.walk(".") :
-    if "3rdParty" in path or ".sconf" in path or "Swift.app" in path or path.startswith("build") or "xmppbench" in path :
-      continue
-    for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file and not "BuildVersion.h" in file and not "Swiften.h" in file and not "Version.h" in file and not "swiften-config.h" in file and not "linit.cpp" in file ] :
-      ok &= check_copyright(filename) 
-  if not ok :
-    sys.exit(-1)
+  file = sys.argv[2]
+  if (file.endswith(".cpp") or file.endswith(".h")) and not "3rdParty" in file :
+    if not check_copyright(file) :
+      sys.exit(-1)
 elif sys.argv[1] == "set-copyright" :
   (username, email) = get_userinfo()
   copyright = get_copyright(username, email)
   set_copyright(sys.argv[2], copyright)
-elif sys.argv[1] == "set-all-copyrights" :
-  (username, email) = get_userinfo()
-  copyright = get_copyright(username, email)
-  for (path, dirs, files) in os.walk(".") :
-    if "3rdParty" in path or ".sconf" in path or "Swift.app" in path :
-      continue
-    for filename in [os.path.join(path, file) for file in files if (file.endswith(".cpp") or file.endswith(".h")) and not "ui_" in file and not "moc_" in file and not "qrc_" in file and not "BuildVersion.h" in file and not "swiften-config.h" in file] :
-      set_copyright(filename, copyright) 
 else :
   print "Unknown command: " + sys.argv[1]
   sys.exit(-1)
diff --git a/BuildTools/Git/Hooks/pre-commit b/BuildTools/Git/Hooks/pre-commit
index 8130ad6..28bebfc 100755
--- a/BuildTools/Git/Hooks/pre-commit
+++ b/BuildTools/Git/Hooks/pre-commit
@@ -1,13 +1,16 @@
 #!/bin/sh
 
-echo "Checking tabs ..."
-if ! BuildTools/CheckTabs.py; then
-	echo "Expanded tabs found. Aborting commit."
-	exit -1
-fi
+IFS='
+'
 
-echo "Checking copyrights ..."
-if ! BuildTools/Copyrighter.py check-all-copyrights; then
-	echo "Copyright error found. Aborting commit."
-	exit -1
-fi
+echo "Checking tabs & copyrights ..."
+for file in $(git diff --cached --name-only); do
+	if ! BuildTools/CheckTabs.py $file; then
+		echo "ERROR: '$file' contains expanded tabs. Aborting commit."
+		exit -1
+	fi
+	if ! BuildTools/Copyrighter.py check-copyright $file; then
+		echo "ERROR: '$file' has a copyright error. Aborting commit."
+		exit -1
+	fi
+done
-- 
cgit v0.10.2-6-g49f6