#!/usr/bin/env bash

#!/usr/bin/env bash
rvm_base_except="selector"
source "$rvm_scripts_path/base"

usage()
{
  printf "Usage: 'rvm disk-usage {all,archives,repos,sources,logs,packages,rubies,gemsets}'\n"
  printf "       Lists the space rvm uses for a given item.\n"
  exit 1
}

disk_usage_for_directory()
{
  du -hs "${1}/" | awk '{print $1}'
}

disk_usage()
{
  local current_path="$rvm_path/$2"
  if [[ -n "$current_path" && -d "$current_path" && "$current_path" != "/" ]]; then
    echo "$1 Usage: $(disk_usage_for_directory "$current_path")"
  fi
  return 0
}

all_disk_usage()
{
  archives_disk_usage
  repos_disk_usage
  sources_disk_usage
  logs_disk_usage
  packages_disk_usage
  rubies_disk_usage
  gemsets_disk_usage
  total_disk_usage
}

total_disk_usage()
{
  echo "Total Disk Usage: $(disk_usage_for_directory "$rvm_path")"
}

archives_disk_usage() { disk_usage "Downloaded Archives" "archives"; }
repos_disk_usage()    { disk_usage "Repositories" "repos"; }
sources_disk_usage()  { disk_usage "Extracted Source Code" "src"; }
logs_disk_usage()     { disk_usage "Log Files" "log"; }
packages_disk_usage() { disk_usage "Packages" "usr"; }
rubies_disk_usage()   { disk_usage "Rubies" "rubies"; }
gemsets_disk_usage()  { disk_usage "Gemsets" "gems"; }


# Exit when there is no argument.
[[ -z "$1" ]] && usage

case "$1" in
  all|archives|repos|sources|logs|total|packages|rubies|gemsets) eval "$1_disk_usage" ;;
  *)        usage ;;
esac
