loom
93 строки · 2.4 Кб
1/*
2MIT License
3
4Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5
6https://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
19using namespace simodo::inout;
20using namespace simodo::variable;
21
22namespace
23{
24int jsonize (const std::string & file_name)
25{
26ConsoleReporter reporter;
27Value value;
28JsonRdp parser(reporter, file_name, value);
29
30bool ok = parser.parse();
31
32if (ok)
33{
34ok = saveJson(value, std::cout, false);
35
36if (!ok)
37std::cout << "Ошибка вывода в файл '" << file_name << "'" << std::endl;
38}
39
40return ok ? 0 : 1;
41}
42}
43
44int main(int argc, char *argv[])
45{
46std::vector<std::string> arguments(argv + 1, argv + argc);
47
48std::string file_name = "";
49bool error = false;
50bool help = false;
51
52for(size_t i=0; i < arguments.size(); ++i)
53{
54const std::string & arg = arguments[i];
55
56if (arg[0] == '-')
57{
58if (arg == "--help" || arg == "-h")
59help = true;
60else
61error = true;
62}
63else if (file_name.empty())
64file_name = arg;
65else
66error = true;
67}
68
69if (!help && file_name.empty())
70error = true;
71
72if (error)
73{
74std::cout << "Ошибка в параметрах запуска" << std::endl;
75help = true;
76}
77
78if (help)
79std::cout << "Утилита тестирования средств работы с JSON. Проект SIMODO." << std::endl
80<< "Формат запуска:" << std::endl
81<< " <имя утилиты> [<параметры>] <файл>" << std::endl
82<< "Параметры:" << std::endl
83<< " -h | --help - отображение подсказки по запуску программы" << std::endl
84;
85
86if (error)
87return 1;
88
89if (file_name.empty())
90return 0;
91
92return jsonize(file_name);
93}
94