#!python

'''
Usage:
    mapname <filename> --mapper-function <module.func> [--params=<name:value>...]

'''

import os, sys
import docopt
from snap import common
from mercury.utils import parse_cli_params


def main(args):

    sys.path.append(os.getcwd())
    input_filename = args['<filename>']
    
    mapper = args['<module.func>']

    tokens = mapper.split('.')
    if len(tokens) != 2:
        raise Exception('The --mapper-function option must be of the format "module.classname".')

    module_name = tokens[0]
    classname = tokens[1]

    mapper_function = common.load_class(classname, module_name)    
    user_params = parse_cli_params(args.get('--params') or [])

    print(mapper_function(input_filename, **user_params))


if __name__ == '__main__':
    args = docopt.docopt(__doc__)
    main(args)