Comparing Code Folders, the groovy way
Ich habe mir vor einiger Zeit mal die Zeit genommen, ein wenig mit Groovy rumzuspielen, da ich glaube dass Groovy eine Prima Scriptingergänzung zu JAVA darstellt. Und heute hatte ich mal einen typischen Scripting Task aufm Schreibtisch:
Das Vergleichen zweier Verzeichnisse, in dem einen JAVA Code aus einer älteren Iteration und in dem anderen die neue Version. Mich haben nur die groben Zahlen (LoC, Files) interessiert und so sieht die Groovy-Lösung aus:
// Pattern for Java Filesdef p = ~/.*\.java/// Pathes to the directories containing the codedef newPath ='c:\\code\\20090427'def oldPath ='c:\\code\\20090213'// variables for countingdef newFilecount = 0def oldFilecount = 0def newLOCcount = 0def oldLOCcount = 0//define a closure for recursive directory access// in the new code folderdef directoryClosNewdirectoryClosNew = {it.eachDir(directoryClosNew);it.eachFileMatch(p){newFilecount++println "New source: $it"it.eachLine {newLOCcount++}}}//define a closure for recursive directory access// in the old code folderdef directoryClosOlddirectoryClosOld = {it.eachDir(directoryClosOld);it.eachFileMatch(p){oldFilecount++println "Old source: $it"it.eachLine {oldLOCcount++}}}// call closure on directoriesdirectoryClosNew(new File( newPath ))directoryClosOld(new File( oldPath ))println " Old number of Java Files $oldFilecount \n New number of Java Files $newFilecount "println " Old Lines of Code $oldLOCcount \n New Lines of Code $newLOCcount"
Schick, nicht? :-)