diff --git a/git_stats.sh b/git_stats.sh new file mode 100755 index 0000000..01348a4 --- /dev/null +++ b/git_stats.sh @@ -0,0 +1,50 @@ +function git_history { + git log $filename | grep "Date: " +} + +function first_commit { + git_history | tail -1 +} + +function last_commit { + git_history | head -1 +} + +function number_of_commits { + git_history | wc -l +} + +function legible_output { + # $2: filename + # $1: lines of code + # $3: number of commits + # $6: month (first) + # $7: date (first) + # $9: year (first) + # $13: month (last) + # $14: date (last) + # $16: year (last) + awk '{print $2 "," $1 "," $3 "," $6 " " $7 " " $9 "," $13 " " $14 " " $16}' +} + +function csv_lines_for { + for filename in $(find . -iname "*.$1"); do + echo "`wc -l $filename` `number_of_commits` `first_commit` `last_commit`" | + legible_output | + xargs echo + done +} + +function create_csv { + echo "filename,lines of code,number of commits,date of first commit,date of last commit" + + for argument in "$@" + do + csv_lines_for $argument + done +} + +cd $1 +create_csv $@ +cd - +