#!/usr/bin/env python3
from os.path import expanduser
from prompt_toolkit import prompt
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.contrib.completers import WordCompleter
from prompt_toolkit.history import FileHistory
from gscli.config import Config, NoDefaultConfigError, create_default_config
from gscli.commands import commands, execute
from gscli.validation import CommandValidator


command_completer = WordCompleter(commands.keys())
history = FileHistory(expanduser('~/.gscli_history'))


if __name__ == '__main__':
    try:
        try:
            config = Config()
        except NoDefaultConfigError:
            config = create_default_config()
        while True:
            text = prompt(
                '(gscli) ', completer=command_completer,
                history=history, auto_suggest=AutoSuggestFromHistory(),
                validator=CommandValidator(), get_title=lambda: 'gscli',
            )
            try:
                execute(text, config)
            except SystemExit:
                continue
    except (EOFError, KeyboardInterrupt):
        quit()
