#! /usr/bin/python3

import sys
from optparse import OptionParser

from creole.lint.creolelint import validate
from creole.lint.ansiwriter import AnsiWriter

def parse_cmdline():
    parser = OptionParser()

    parser.add_option("-t", "--template", dest="tmpl",
                     default=None, help="nom du template Creole")
    parser.add_option("-l", "--level", dest="writelevel", default='warning',
                     help="level d'affichage des messages")
    parser.add_option("-n", "--name", dest="name",
                     default=None, help="nom du lint a tester")
    parser.add_option("-d", "--dico-only", action="store_true",
                      dest="only_on_dico",
                      default=False, help="lint uniquement sur les dicos")
    return parser.parse_args()

def main():
    options, args = parse_cmdline()
    tmpl = options.tmpl
    writelevel = options.writelevel

    #if options.writelevel not in errorlevel.values():
    #    raise Exception('Niveau %s inconnu'% options.writelevel)
    only_on_template = False
    only_on_dico = options.only_on_dico
    if tmpl is not None:
        only_on_template = True
    if options.name:
        keywords = [options.name]
        writelevel = 'info'
    else:
        keywords = []
        if not only_on_template:
        #    keywords.extend(['orphans_def',
        #        'orphans_set', 'orphans_for', 'orphans_tmpl_files',
        #        'define', 'syntax_for',  'syntax_var', 'syntax_var2',
        #        'syntax_function', 'valid_client_option'])
            keywords.extend(['valid_dtd', 'wrong_dicos_name',
                    'tabs_in_dicos', 'hidden_if_in_dicos',
                    'condition_without_target',
                    'obligatoire_in_dicos',
                    'valid_slave_value',
                    'valid_var_label', 'valid_separator_label',
                    'valid_help_label',
                    'activation_var_without_help',
                    'family_without_help',
                    'family_without_icon',
                    'old_fw_file'])
        if not only_on_dico:
            keywords.extend(['valid_parse_tmpl'])
        keywords.append('builtins')
    ansi = AnsiWriter(writelevel)
    try:
        for keyword in keywords:
            validate(keyword, ansi, tmpl)
    except Exception as err:
        from traceback import print_exc
        print_exc()
        #print u"Erreur : {0}".format(err)
        sys.exit(1)

main()
