#!/usr/bin/env python
from __future__ import absolute_import
from __future__ import print_function

from lib.find_add_class import display, find
import glob
import argparse
import sys

from six.moves import filter
try:
    import lister
    from typing import cast, Callable, Dict, Iterable, List
except ImportError as e:
    print("ImportError: {}".format(e))
    print("You need to run the Zulip linters inside a Zulip dev environment.")
    print("If you are using Vagrant, you can `vagrant ssh` to enter the Vagrant guest.")
    sys.exit(1)

def process_files():
    # type: () -> None

    description = '''
        Use this tool to find HTML classes that we use in our JS code.
        This looks for calls to addClass, and if you use the -v option,
        you will get a display of (fn, html_class) tuples that
        represent addClass calls.

        If you call it with no options, the tool acts as a linter, and
        it will complain if it can't resolve the class for an addClass()
        call.
        '''

    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('-v', '--verbose',
                        action='store_true', default=False,
                        help='show where calls are')
    args = parser.parse_args()

    fns = glob.glob('static/js/*.js')
    if args.verbose:
        display(fns)
    else:
        find(fns)

if __name__ == '__main__':
    process_files()
