GCC Code Coverage Report


Directory: src/
File: script_console/console.cpp
Date: 2024-12-30 15:39:09
Exec Total Coverage
Lines: 0 41 0.0%
Functions: 0 5 0.0%
Branches: 0 26 0.0%

Line Branch Exec Source
1 #include "script.h"
2 #include <csignal>
3 #include <cstdlib>
4 #include <iostream>
5 #include <string>
6
7 volatile std::sig_atomic_t g_signal_status;
8
9 void signal_handler(int signal)
10 {
11 g_signal_status = signal;
12 }
13
14 inline void print_data(const char* msg)
15 {
16 std::cout << "\033[32m";
17 std::cout << msg;
18 std::cout << "\033[0m";
19 }
20
21 inline void print_error(const char* msg)
22 {
23 std::cout << "\033[31m";
24 std::cout << msg << std::endl;
25 std::cout << "\033[0m";
26 }
27
28 inline void print_success()
29 {
30 std::cout << "\033[34m";
31 std::cout << " (success)";
32 std::cout << "\033[0m\n";
33 }
34
35 int main()
36 {
37 std::signal(SIGINT, signal_handler);
38
39 script::engine eng{print_data};
40 script::command cmd;
41 std::string operand;
42
43 std::cout << "Enter a text to process or \"exit\" to end the program:\n";
44
45 std::string input;
46 while (true)
47 {
48 if (g_signal_status != 0)
49 break;
50
51 std::getline(std::cin, input);
52
53 if (input == "exit")
54 break;
55
56 script::parse(input, cmd, operand);
57
58 if (cmd == script::command::INVALID)
59 {
60 print_error("invalid command");
61 continue;
62 }
63
64 const auto res = eng.run(cmd, operand);
65
66 if (!res.empty())
67 {
68 print_error(res.c_str());
69 continue;
70 }
71
72 print_success();
73 }
74
75 return EXIT_SUCCESS;
76 }
77