#!/usr/bin/scala
!#

import java.io.File
val nomearq = "metadados.txt"

println("start")
val dirs:List[String] = if (args.size>0) args.toList else List(".")
sizePrintCada(dirs)

//== Funções =====
def sizePrintCada(dirs:List[String]) {

  def countSize(f:File):Long = {
    if (f.isFile) { 
      if (f.getName==nomearq)
        f.length
      else 
        0L
    } else if (f.isDirectory) {
      f.listFiles.par.map{countSize}.sum
    } else 0L
  }
  
  def printSize(pos:String, size:Long) {
    val s = size.toDouble
    print("Tamanho dos metadados em "+pos+": ")
    val (b,kb,mb,gb) = (1,1000,1000000,1000000000)
    if (s > gb) {
      printf("%.2fGB\n",s/gb)
    } else if (s>mb) {
      printf("%.2fMB\n",s/mb)
    } else if (s>kb) {
      printf("%.2fKB\n",s/kb)
    } else {
      printf("%.2fB \n",s/b)
    }
  }

  for (dir <- dirs) {
    var tamTotal = 0L
    val flist = (new File(dir)).listFiles.par
    val longSizes = flist.map{countSize}
    tamTotal = longSizes.seq.sum
    printSize(dir,tamTotal)
  }
}