#!/bin/bash
#
# Utility, originally from  Matthias Sohn (bug 450186), to check who has
# committed to "simrel.build" repo, but then has not, for one year.
# Part of a routine yearly process to remove inactive committers from
# callisto-dev.
#
# In general, besides these "commit records" some people want to be left on,
# as "backups" for their projects.
# And, a few cases of "people recently added" so they would not have had time
# yet to commit.
#
# For 2014 effort, in November/December of 2014, see
#    https://bugs.eclipse.org/bugs/show_bug.cgi?id=450186
#
# This script can be ran in an "complete clone" of org.eclipse.simrel.build.

# Note that this script will not capture those in the "calisto-dev"
# group who have never contributed to the "git repo".

# Note too, that in future, it will continue to "re-find" people who hae been removed already,
# from callisto-dev. May want to adjust "authors" to be "only authors since November, 2013,
# since any prior to that will have been "dealt with" already? And/or find a better way
# to automate this "git listing" with the "listing" of ids from callisto-dev list.

BUILD_DIR=/home/davidw/gitsimrel/org.eclipse.simrel.build
SCRIPT_DIR=/home/davidw/gitsimrel/org.eclipse.simrel.tools/reportUtilities

pushd $BUILD_DIR

allauthors() { git shortlog --all -sen | cut -s -f2 | sort; }
authors() { git shortlog --all -sn | cut -s -f2 | sort; }
lastyear() { git shortlog --all -sn --since="1 year ago" | cut -s -f2 | sort; }

# allauthors is used, instead of authors, to write a temporary file, allauthors.txt,
# that can be used to improve the .mailmap file,
# which is in root of repository, and makes sure the mistakes or changes
# in names or emails get mapped to just one name and email. Having a good
# .mailmap file improves the "final output" quite a bit. Otherwise, the report may show
# same person on both active and inactive lists, and other anomilies, depending on which id they
# used for the commit.

# get "date of run" for putting in files.
now=$( date --utc +%s )

ALL_AUTHORS_FILE=$SCRIPT_DIR/allauthors.txt

echo -e "\n\t\tReport as of  $( date --utc -d @$now ) \n" >$ALL_AUTHORS_FILE
allauthors >> $ALL_AUTHORS_FILE


COMMITTER_LIST_FILE=$SCRIPT_DIR/committerList.txt
echo -e "\n\t\tReport as of  $( date --utc -d @$now ) \n" >$COMMITTER_LIST_FILE
echo "Active during last year" >>$COMMITTER_LIST_FILE
echo "=======================" >>$COMMITTER_LIST_FILE
lastyear >>$COMMITTER_LIST_FILE
echo >>$COMMITTER_LIST_FILE
echo "Inactive during last year" >>$COMMITTER_LIST_FILE
echo "=========================" >>$COMMITTER_LIST_FILE

comm -13 <(lastyear) <(authors) >>$COMMITTER_LIST_FILE
echo -e "\n\t\tOutput written to $COMMITTER_LIST_FILE"

