view cds-churn @ 43:7fc785a79615

renamed penis to churn
author Josef "Jeff" Sipek <jsipek@cs.sunysb.edu>
date Sat, 05 May 2007 15:53:53 -0400
parents cds-penis@ba807b74c433
children
line wrap: on
line source

#!/bin/bash

function annotate
{
	for file in `find . -type f | grep -v CVS | xargs -0`; do
		cvs annotate $file 2> /dev/null | awk '{print $2}' | cut -c 2-
	done
}

function centergraph
{
	WIDTH=$1
	LINES=$2
	MAX=$3

	my=`echo "scale=3; $WIDTH * ($LINES / $MAX)" | bc -lq | sed -e 's/\./\n/' | head -1`
	if [ -z "$my" ] ; then
		# bc likes to use .xyz for numbers < 1
		my=0
	fi

	for ((i=0; $i < $my ; i=$(($i+1)) )); do
		printf "#"
	done
}

DIR=`dirname $0`

WIDTH=`stty -a | head -1 | awk '{print $7}' | sed -e 's/[^0-9]//'`
MAX=-1

for entry in `annotate | sort | uniq -c | sort -nr | awk '{print $1 "@" $2}'`; do
	entry=`echo $entry | sed -e 's/@/ /'`
	LINES=`echo $entry | awk '{print $1}'`
	SIZE=`echo $entry | awk '{print $2}'`

	if [ $MAX -eq -1 ] ; then
		MAX=$LINES
	fi

	CENTER=`centergraph $(($WIDTH-6-1-15-1-1)) $LINES $MAX`
	SIZE=`echo $SIZE | $DIR/truncate 15`
	printf "%6d %s %s\n" $LINES "$SIZE" "$CENTER"
done