#!/bin/sh -e
#
#    disk: print the current disk space and usage
#
#    Copyright (C) 2008 Canonical Ltd.
#    Copyright (C) 2011-2014 Dustin Kirkland
#
#    Authors: Dustin Kirkland <kirkland@byobu.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

__disk_detail() {
	df -h
}

__disk() {
	local out="" MP="" size="" pct="" unit=""
	# Default to /, but let users override
	[ -z "$MONITORED_DISK" ] && MP="/" || MP="$MONITORED_DISK"
	case $MP in
		/dev/*)
			if [ -r /proc/mounts ]; then
				MP=$(awk '$1 == m { print $2; exit(0); }' "m=$MP" /proc/mounts)
			else
				MP=$(mount | awk -v m="$MP" '$1 == m { print $3; exit(0); }')
			fi
		;;
	esac
	# this could be done faster with 'stat --file-system --format'
	# but then we'd have to do blocks -> human units ourselves
	out=$(df -h "$MP" 2>/dev/null | awk 'END { printf("%s %s", $2, $5); }')
	set -- ${out}
	size=${1}; pct=${2};
	unit=${size#${size%?}} # get the unit (last char)
	size=${size%?}; # take the unit off
	pct=${pct%?}; # take off the '%'
	case "$unit" in
		k*|K*) unit="$ICON_KB" ;;
		m*|M*) unit="$ICON_MB" ;;
		g*|G*) unit="$ICON_GB" ;;
		t*|T*) unit="$ICON_TB" ;;
	esac
	[ -n "$size" ] || return
	color b m W; printf "%s" "$size"; color -; color m W; printf "%s" "$unit"; color -;
	color b m W; printf "%s" "$pct";  color -; color m W; printf "%s" "$PCT"; color --;
}

# vi: syntax=sh ts=4 noexpandtab
