#!/bin/sh

: << =cut

=head1 NAME

jenkins_builds - Plugin to measure number of jenkins builds

=head1 AUTHOR

Contributed by Holger Levsen. I wrote and used them first for
https://jenkins.debian.net and very much like to hear about
other users of these plugins! Please do tell me!

Use at your own risk and monitor the ressource usage of the plugins
too - it will vary depending on your setup!

Patches, postcards and pancakes are all very much welcome!

=head1 LICENSE

Copyright 2012-2014 Holger Levsen <holger@layer-acht.org>

Released under the GPLv2.

=head1 MAGIC MARKERS

 #%# family=auto
 #%# capabilities=autoconf

=cut

. $MUNIN_LIBDIR/plugins/plugin.sh

if [ "$1" = "autoconf" ]; then
	if [ -d /var/lib/jenkins/jobs ]; then
		echo yes
	else
		echo "no (/var/lib/jenkins/jobs not found)"
	fi
	exit 0
fi

STATEFILE=$MUNIN_PLUGSTATE/$(basename $0)

# delete statefile if it's older than ${jenkins_update_interval} set in /etc/munin/plugin-conf.d/jenkins
if test $(find $STATEFILE -mmin +${jenkins_update_interval}) ; then
	rm -f $STATEFILE
fi

if [ -f $STATEFILE ] && [ "$1" = "" ] ; then
	cat $STATEFILE
	exit 0
fi

JOB_PREFIXES=$(ls -1 /var/lib/jenkins/jobs/|cut -d "_" -f1|sort -f -u)
if [ "$1" = "config" ]; then
	echo 'graph_title Jenkins Builds in the last 24h'
	echo 'graph_args --base 1000 -l 0 '
	echo 'graph_scale no'
	echo 'graph_total total'
	echo 'graph_vlabel Jenkins Builds per category in the last 24h'
	echo 'graph_category jenkins'
	draw=AREA
	for PREFIX in $JOB_PREFIXES ; do
		echo "jenkins_builds_$PREFIX.label $PREFIX builds"
		echo "jenkins_builds_$PREFIX.draw $draw"
		if [ "$draw" = "AREA" ] ; then draw=STACK ; fi
	done
	exit 0
fi

for PREFIX in $JOB_PREFIXES ; do
	NR=$(find /var/lib/jenkins/jobs/$PREFIX*/builds/ -type d -mtime -1 -name "*_*"| wc -l)
	echo "jenkins_builds_$PREFIX.value $NR" | tee -a $STATEFILE
done
