#!/usr/bin/env python

from __future__ import print_function
import optparse
import os
import sys
from ansiblereview.version import __version__
from ansiblereview import classify
from ansiblereview.utils import error, info, warn, read_config


def main(args):

    parser = optparse.OptionParser("%prog playbook_file|role_file|inventory_file",
                                   version="%prog " + __version__)

    settings = read_config()
    parser.add_option('-d', dest='rulesdir',
                      help="Location of standards rules: [%s]" % settings.rulesdir,
                      default = settings.rulesdir)
    parser.add_option('-r', dest='lintdir',
                      help="Location of additional lint rules: [%s]" % settings.lintdir,
                      default=settings.lintdir)
    parser.add_option('-q', dest='quiet', action="store_true", default=False,
                      help="Only output errors")
    options, args = parser.parse_args(args)

    if len(args) == 0:
        parser.print_help(file=sys.stderr)
        if os.path.exists(settings.configfile):
            info("Using configuration file: %s" % settings.configfile, file=sys.stderr)
        else:
            warn("No configuration file found at %s" % settings.configfile, file=sys.stderr)
        return 1

    errors = 0
    for arg in args:
        if ':' in arg:
            (arg, lines) = arg.split(":")
        else:
            lines = None
        candidate = classify(arg)
        if candidate:
            errors = errors + candidate.review(options, lines)
        else:
            error("Couldn't classify file %s" % arg)
    return errors


if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))
