#!/usr/bin/env python
#
# vim:syntax=python
#
# Plugin to monitor the amount of packages in an approx cache.
#
# Usage: place in /etc/munin/plugins/ (or link it there using ln -s)
#
# Parameters understood:
#
# 	config   (required)
# 	autoconf (optional - used by munin-config)
#
# Magic markers - optional - used by installation scripts and
# munin-config:
#
#%# family=manual
#%# capabilities=autoconf
#
# Now for the real work...

from sys import argv, exit
from os.path import walk, exists, isfile, join

def get_file_types():
	"""Returns an array of filetype => count."""

	out = {}

	def visitor(arg, dirname, names):
		for file in names:
			if not isfile(join(dirname, file)):
				continue
			ext = file.split(".")[-1]

			out[ext] = out.get(ext, 0) + 1

	walk('/var/cache/approx/', visitor, None)

	return out


# Autoconfiguration
if len(argv) > 1:

	if argv[1] == "autoconf":
		# Test if we can find a approx cache
		if exists('/var/cache/approx'):
			print "yes"
		else:
			print "no ('/var/cacne/approx' not found)"
			exit(1)
		exit()

	elif argv[1] == "config":
		print "graph_title Approx cache";
		print "graph yes";
		#print "graph_category Other";
		#print "graph_total Total";
		print "graph_info Statistics from the Approx cache.";
		#print "debs.label DEBs";
		#print "pending.warning 0:0";
		#print "hold.label hold";
		for type in get_file_types().keys():
			print "%s.label %s" % (type.lower(), type)
		exit()

for type, count in get_file_types().iteritems():
	print "%s.value %d" % (type.lower(), count)

exit()
