loom

Форк
0
/
Parameters.cpp 
86 строк · 3.0 Кб
1
#include "Parameters.h"
2

3
#include "simodo/LibVersion.h"
4

5
#include <iostream>
6

7
namespace simodo 
8
{
9
    int Parameters::parse(int argc, char *argv[])
10
    {
11
        std::vector<std::string> arguments(argv + 1, argv + argc);
12

13
        bool error   = false;
14
        bool help    = false;
15
        bool version = false;
16

17
        for(size_t i=0; i < arguments.size(); ++i)
18
        {
19
            const std::string & arg = arguments[i];
20

21
            if (arg[0] == '-')
22
            {
23
                if (arg == "--help" || arg == "-h")
24
                    help = true;
25
                else if (arg == "--version" || arg == "-v")
26
                    version = true;
27
                else if (arg == "--loom-directory" || arg == "-d")
28
                {
29
                    if (i == arguments.size()-1)
30
                        error = true;
31
                    else
32
                        loom_dir = arguments[++i];
33
                }
34
                else if (arg == "--need-prompt-avoid" || arg == "-A")
35
                    need_prompt_avoid = true;
36
                else if (arg == "--engine-status-notification" || arg == "-S")
37
                    need_engine_status_notification = true;
38
                else
39
                    error = true;
40
            }
41
            else if (file_name.empty())
42
                file_name = arg;
43
            else
44
                error = true;
45
        }
46

47
        if (file_name.empty() && !version && !help)
48
            error = true;
49

50
        if (error) {
51
            std::cout << "Ошибка в параметрах запуска" << std::endl;
52
            help = true;
53
        }
54

55
        const std::string logo = "Утилита отладки ПОЯ. Проект SIMODO.";
56

57
        {
58
            using namespace std;
59

60
            if (help)
61
                cout	<< logo << endl
62
                        << "Формат запуска:" << endl
63
                        << "    simodo-debug [<параметры>] <файл>" << endl
64
                        << "Параметры:" << endl
65
                        << "    -h | --help                  - отображение подсказки по запуску программы" << endl
66
                        << "    -v | --version               - отображение версии программы" << endl
67
                        << "    -d | --loom-directory <путь> - путь к каталогу установки SIMODO/loom (по умолчанию: .)" << endl
68
                        << "    -A | --need-prompt-avoid     - не выводить приглашения на ввод команды" << endl
69
                        << "    -S | --engine-status-notification - выводить сообщение о статусе движка" << endl
70
                        ;
71
        }
72

73
        if (error)
74
            return 1;
75

76
        if (version)
77
            std::cout << logo << std::endl
78
                << "Версия: " << lib_version().major() << "." << lib_version().minor() << std::endl;
79

80
        if (file_name.empty())
81
            return 0;
82

83
        return -1;
84
    }
85

86
}
87

88

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.