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

from __future__ import print_function

import argparse
import pkg_resources

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


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


if __name__ == "__main__":
    PARSER = argparse.ArgumentParser(description="Perform LOC counting.")
    PARSER.add_argument('-V', '--version', action='version',
                        version=VERSION)
    PARSER.add_argument("files", nargs="*")
    ARGS = vars(PARSER.parse_args())
    if ARGS['files']:
        COUNTER = Counter(ARGS['files'])
    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("version " + 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()

