#!/usr/bin/python3
"""Zephir-cmd-input script
"""
from os import environ
from sys import exit, argv
from traceback import print_exc
from json import dumps
from cucchiaiata import Parser, config, Configuration, JsonError
from cucchiaiata.i18n import _
from cucchiaiata.output.interactive import get as interactive_get
from cucchiaiata.output.json import get as json_get


def main():
    dico = {'interactive': interactive_get,
            'json': json_get,
            }
    default_outputs = ','.join(dico.keys())
    outputs = [dico[output] for output in environ.get('RISOTTO_OUTPUT', default_outputs).split(',')]
    try:
        if len(argv) > 2 and argv[1] == 'v1.setting.session.configure':
            Configuration().get()
        else:
            parser = Parser()
            message = parser.remote_config.option('message').value.get()
            for output in outputs:
                func = output(message)
                if func:
                    func(parser.get(),
                         config,
                         )
                    break
    except KeyboardInterrupt:
        pass
    except JsonError as err:
        print(dumps(err.message,
                    indent=config.indent),
                    )
        exit(1)
    except Exception as err:
        if config.debug:
            print_exc()
        print(_('Error: {}').format(err))
        exit(1)


if __name__ == "__main__":
    main()