#!/usr/bin/env python
#-*- coding: utf-8 -*-

import pkg_resources
import sys

from pycount.core import Counter
from pycount.core import Timer


VERSION = pkg_resources.require("pycount")[0].version


if __name__ == "__main__":
    if len(sys.argv) > 2:
        COUNTER = Counter(sys.argv[1:])
    elif len(sys.argv) == 2:
        COUNTER = Counter(sys.argv[1])
    else:    
        COUNTER = Counter('.')
    try:
        with Timer() as timer:
            COUNTER.discover()
            COUNTER.count()
    finally:
        timed = timer.interval
    def report():
        """Generates and prints a decent looking breakdown report for lines
           of code for all existent languages under our path
        """
        if COUNTER.results:
            counted = sum(COUNTER.file_types.values())
            print(str((COUNTER.total_uniques - counted)) + " ignored files.")
            print("ver: " + VERSION)
            print("\nLanguage                       Files         LOC")
            print("-" * 48)
            for key, value in sorted(COUNTER.results.items(), key=lambda x: x[1],
                                     reverse=True):
                if value is not 0:
                    print("{0:24}     {1:7d}     {2:7d}".format(key, COUNTER.file_types[key], value))
            print("-" * 48)
            print("{0:24}     {1:7d}   {2:9d}".format("SUM:", counted,
                  sum(COUNTER.results.values())))
            print("-" * 48)
            print("{0:24} {1:23.2f}".format("RUNTIME (sec):", timed))
            print("-" * 48)
        else:
            print("No results.")
    report()

