loom

Форк
0
93 строки · 2.4 Кб
1
/*
2
MIT License
3

4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5

6
https://bmstu.codes/lsx/simodo
7
*/
8

9
/*! \file Утилита тестирования средств работы с JSON библиотеки SIMODO core. Проект SIMODO.
10
*/
11

12
#include "simodo/variable/json/Serialization.h"
13
#include "simodo/variable/json/parser/JsonRdp.h"
14
#include "simodo/inout/reporter/ConsoleReporter.h"
15
#include "simodo/inout/convert/functions.h"
16

17
#include <iostream>
18

19
using namespace simodo::inout;
20
using namespace simodo::variable;
21

22
namespace
23
{
24
    int jsonize (const std::string & file_name)
25
    {
26
        ConsoleReporter reporter;
27
        Value           value;
28
        JsonRdp         parser(reporter, file_name, value);
29

30
        bool ok = parser.parse();
31

32
        if (ok)
33
        {
34
            ok = saveJson(value, std::cout, false);
35

36
            if (!ok)
37
                std::cout << "Ошибка вывода в файл '" << file_name << "'" << std::endl;
38
        }
39

40
        return ok ? 0 : 1;
41
    }
42
}
43

44
int main(int argc, char *argv[])
45
{
46
    std::vector<std::string> arguments(argv + 1, argv + argc);
47

48
    std::string	file_name = "";
49
    bool	    error     = false;
50
    bool	    help      = false;
51

52
    for(size_t i=0; i < arguments.size(); ++i)
53
    {
54
        const std::string & arg = arguments[i];
55

56
        if (arg[0] == '-')
57
        {
58
            if (arg == "--help" || arg == "-h")
59
                help = true;
60
            else
61
                error = true;
62
        }
63
        else if (file_name.empty())
64
            file_name = arg;
65
        else
66
            error = true;
67
    }
68

69
    if (!help && file_name.empty())
70
        error = true;
71

72
    if (error)
73
    {
74
        std::cout << "Ошибка в параметрах запуска" << std::endl;
75
        help = true;
76
    }
77

78
    if (help)
79
        std::cout   << "Утилита тестирования средств работы с JSON. Проект SIMODO." << std::endl
80
                    << "Формат запуска:" << std::endl
81
                    << "    <имя утилиты> [<параметры>] <файл>" << std::endl
82
                    << "Параметры:" << std::endl
83
                    << "    -h | --help - отображение подсказки по запуску программы" << std::endl
84
                    ;
85

86
    if (error)
87
        return 1;
88

89
    if (file_name.empty())
90
        return 0;
91

92
    return jsonize(file_name);
93
}
94

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

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

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

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