419cce7e3fc55db4b183bcf1d5399e19f3fad477
[quizzer.git] / quizzer / cli.py
1 # Copyright
2
3 import argparse as _argparse
4 import locale as _locale
5
6 from . import __doc__ as _module_doc
7 from . import __version__
8 from . import answerdb as _answerdb
9 from . import quiz as _quiz
10 from .ui import cli as _cli
11
12
13 def main():
14     encoding = _locale.getpreferredencoding(do_setlocale=True)
15
16     parser = _argparse.ArgumentParser(description=_module_doc)
17     parser.add_argument(
18         '--version', action='version',
19         version='%(prog)s {}'.format(__version__))
20     parser.add_argument(
21         '-a', '--answers', metavar='ANSWERS', default='answers.json',
22         help='path to an answers database')
23     parser.add_argument(
24         'quiz', metavar='QUIZ',
25         help='path to a quiz file')
26
27     args = parser.parse_args()
28
29     quiz = _quiz.Quiz(path=args.quiz, encoding=encoding)
30     quiz.load()
31     answers = _answerdb.AnswerDatabase(path=args.answers, encoding=encoding)
32     try:
33         answers.load()
34     except IOError:
35         pass
36     ui = _cli.CommandLineInterface(quiz=quiz, answers=answers)
37     ui.run()
38     ui.answers.save()
39     ui.display_results()