#!/usr/bin/env python3

'''
CLI for the scanner. Outputs tokens.
'''

import sys
import argparse

from stringfuzz.constants import LANGUAGES, SMT_20_STRING, SMT_25_STRING
from stringfuzz.scanner import scan

def main():

    # create arg parser
    parser = argparse.ArgumentParser(description='Tokenize an SMT 2.* file.')
    parser.add_argument(
        'file',
        nargs   = '?',
        default = sys.stdin,
        type    = argparse.FileType('r'),
        help    = 'input file (default: stdin)'
    )
    parser.add_argument(
        '--language',
        '-l',
        dest    = 'language',
        type    = str,
        choices = LANGUAGES,
        default = SMT_25_STRING,
        help    = 'input language (default: {})'.format(SMT_25_STRING)
    )

    # parse args
    args = parser.parse_args()

    # scan input
    try:
        tokens = scan(args.file.read(), language=args.language)

    # report result
    except IndexError as e:
        print(e)
        return 1

    for token in tokens:
        print(token.name, repr(token.value))

    return 0

if __name__ == '__main__':
    main()
