# The LearningOnline Network with CAPA # Scott Harrison # $Id: Makefile.cvs,v 1.1 2002/01/07 22:12:59 harris41 Exp $ STATDIR="loncom/build/cvsstats" STATSUBDIR="cvsstats" help: @echo "*** You need to specify a valid target ***" @echo "cvsreport: look at the latest changes over the last week" @echo "cvscommit: look at the number of commits since the origin of" @echo " LON-CAPA archiving" @echo "linesofcode: look at the number of unique lines of code since" @echo " LON-CAPA archiving" @echo "Information is placed inside CVS:loncom/build/cvsstats" cvsreport: # Header echo "

Automatically generated CVS report

" > \ ../../doc/build/cvsreport.html # General Date Info echo "

LON-CAPA Software Changes from `date --date='7 days ago' \ +\"%Y-%m-%d\"` to `date +\"%Y-%m-%d\"`

" >> \ ../../doc/build/cvsreport.html # General Alteration Info echo "

Number of altered files:" >> ../../doc/build/cvsreport.html cd ../..; cvs log -d ">`date --date='8 days ago' +\"%Y-%m-%d\"`" \ loncom CAPA doc packaging 2>/dev/null | perl \ loncom/build/cvsfilter.pl | grep '^Working file:' | cut -b15- | \ wc -l >> doc/build/cvsreport.html # Listing of Altered Files echo "

Altered files:

" >> \
	../../doc/build/cvsreport.html
	cd ../..; cvs log -d ">`date --date='8 days ago' +\"%Y-%m-%d\"`" \
	loncom CAPA doc packaging 2>/dev/null | \
	perl loncom/build/cvsfilter.pl | grep '^Working file:' | cut -b15- \
	>> doc/build/cvsreport.html
	# Log entries for loncom
	echo "

Log entries for loncom:

" >> \
	../../doc/build/cvsreport.html
	cd ../../loncom; cvs log -d ">`date --date='8 days ago' \
	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
	../doc/build/cvsreport.html
	# Log entries for CAPA
	echo "

Log entries for CAPA:

" >> \
	../../doc/build/cvsreport.html
	cd ../../CAPA; cvs log -d ">`date --date='8 days ago' \
	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
	../doc/build/cvsreport.html
	# Log entries for doc
	echo "

Log entries for doc:

" >> \
	../../doc/build/cvsreport.html
	cd ../../doc; cvs log -d ">`date --date='8 days ago' \
	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
	../doc/build/cvsreport.html
	# Log entries for packaging
	echo "

Log entries for packaging:

" >> \
	../../doc/build/cvsreport.html
	cd ../../packaging; cvs log -d ">`date --date='8 days ago' \
	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
	../doc/build/cvsreport.html
	echo "

" >> ../../doc/build/cvsreport.html statpage: install -d cvsstats echo 'LON-CAPA Coding Metrics' > $(STATSUBDIR)/index.html echo '' >> $(STATSUBDIR)/index.html echo '

LON-CAPA Coding Metrics

' >> $(STATSUBDIR)/index.html echo '
Compiled as of ' >> $(STATSUBDIR)/index.html date >> $(STATSUBDIR)/index.html echo '

 

' echo '
Lines of Code; unique changes per month' >> $(STATSUBDIR)/index.html echo '
Lines of Code; unique changes (*.pm only) per month' >> $(STATSUBDIR)/index.html echo '
Lines of Code; aggregating sum of unique changes per month' >> $(STATSUBDIR)/index.html echo '
Lines of Code; aggregating sum of unique changes (*.pm only) per month' >> $(STATSUBDIR)/index.html echo '
Number of commits to software repository per month' >> $(STATSUBDIR)/index.html echo '
Number of commits to software repository (*.pm only) per month' >> $(STATSUBDIR)/index.html echo '
Aggregating sum of number of commits to software repository per month' >> $(STATSUBDIR)/index.html echo '
Aggregating sum of number of commits to software repository (*.pm only) per month' >> $(STATSUBDIR)/index.html echo '
lines of code' >> $(STATSUBDIR)/index.html echo '
lines of code, perl modules' >> $(STATSUBDIR)/index.html echo '
aggregate lines of code' >> $(STATSUBDIR)/index.html echo '
aggregate lines of code, perl modules' >> $(STATSUBDIR)/index.html echo '
number of commits' >> $(STATSUBDIR)/index.html echo '
number of commits, perl modules' >> $(STATSUBDIR)/index.html echo '
aggregate number of commits' >> $(STATSUBDIR)/index.html echo '
aggregate number of commits, perl modules' >> $(STATSUBDIR)/index.html echo '' >> $(STATSUBDIR)/index.html echo '' >> $(STATSUBDIR)/index.html linesofcode: install -d cvsstats # for all, and for .pm # get date array cd ../..; perl -e ' \ ($$begindate,$$enddate)=@ARGV;\ ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\ ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\ for ($$y=$$by; $$y<=$$ey; $$y++) {\ if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\ if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\ for ($$m; $$m<=$$m2; $$m++) {\ printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \ $$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\ }\ }' 20000101 `date +"%Y%m%d"` |\ perl -nle '($$d1,$$d2)=split(/\t/);$$loc=`cvs -q diff -D$$d1 -D$$d2 -b -B -N | egrep \"^> .*[^ \t]\" | sed \"s/^> //g\" | sort | uniq | wc -l`;chomp $$loc;$$locsum+=$$loc;print "$$d2\t$$loc\t$$locsum";' > $(STATDIR)/table.txt echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nUnique changes per month"\nset output "cvsstats/loc.png"\nset term png color\nplot "cvsstats/table.txt" using 1:2 with lines' | gnuplot echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nUnique changes per month"\nset output "cvsstats/locsum.png"\nset term png color\nplot "cvsstats/table.txt" using 1:3 with lines' | gnuplot cd ../..; perl -e ' \ ($$begindate,$$enddate)=@ARGV;\ ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\ ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\ for ($$y=$$by; $$y<=$$ey; $$y++) {\ if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\ if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\ for ($$m; $$m<=$$m2; $$m++) {\ printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \ $$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\ }\ }' 20000101 `date +"%Y%m%d"` |\ perl -nle '($$d1,$$d2)=split(/\t/);$$loc=`cvs -q diff -D$$d1 -D$$d2 -b -B -N |\ perl -e "\@flag=(1);while(<>){if (/RCS file:/) {\@flag=(); pop \@flag; \@flag=(1) if /^RCS file: .*\.pm\,v/;} print if \@flag;}" |\ egrep \"^> .*[^ \t]\" | sed \"s/^> //g\" | sort | uniq | wc -l`;chomp $$loc;$$locsum+=$$loc;print "$$d2\t$$loc\t$$locsum";' > $(STATDIR)/tablepm.txt # process counts, generate table # pass table to gnuplot echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nUnique changes per month"\nset output "cvsstats/locpm.png"\nset term png color\nplot "cvsstats/tablepm.txt" using 1:2 with lines' | gnuplot echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nUnique changes per month"\nset output "cvsstats/locpmsum.png"\nset term png color\nplot "cvsstats/tablepm.txt" using 1:3 with lines' | gnuplot cvscommit: # for all, and for .pm # get date array # process counts, generate table # pass table to gnuplot clean: rm -Rf cvsstats