Skip to content

Commit 5e53ab7

Browse files
committed
feat: lots of changes
* Added definitions.hpp, which defines APP_VERSION, PLATFORM_POSIX and PLATFORM_WINDOWS * Allow compiling on any POSIX platform * Display version in menu banner * Nicer new look (uses brighter colors)
1 parent 5506718 commit 5e53ab7

5 files changed

Lines changed: 59 additions & 40 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
- Install CMake
1515
- Run `build.sh`
1616

17-
### Screenshot (v1.1.2)
18-
![Screenshot v1.1.2](./assets/v1.1.1.png)
17+
### Screenshot (v1.3.0)
18+
![Screenshot v1.3.0](./assets/v1.3.0.png)

assets/1.3.0.png

31.9 KB
Loading

assets/v1.1.1.png

-25.2 KB
Binary file not shown.

src/definitions.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#ifndef DEFINITIONS_HPP
2+
#define DEFINITIONS_HPP
3+
4+
#if defined(__linux__) || defined(__APPLE__) || defined(__unix__) || defined(__unix)
5+
#define PLATFORM_POSIX
6+
#elif defined(_WIN32) || defined(_WIN64)
7+
#define PLATFORM_WINDOWS
8+
#endif
9+
10+
#define APP_VERSION "1.3.0"
11+
12+
#endif

src/main.cpp

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
#include "console.hpp"
99
#include "char.hpp"
1010
#include "calculator_shell.hpp"
11+
#include "definitions.hpp"
1112

12-
#ifdef _WIN32
13+
#ifdef PLATFORM_WINDOWS
1314
#include <windows.h>
1415
#include <conio.h>
1516
#else
@@ -34,59 +35,62 @@ void banner() {
3435
/ \| | \ |\ __\ \ __\/ _ \ / _ \| | __| |___ __| |___
3536
| Y Y \ | / |_| | | || | ( <_> | <_> ) |__ /__ __/ /__ __/ )";
3637

37-
const char* banner3 = R"(
38+
const char *banner3 = R"(
3839
|__|_| /____/|____/__| |__||__| \____/ \____/|____/ |__| |__|
39-
\/ )";
40+
\/ )";
4041

4142
/* Print using ansi color codes for a fade effect from white to blue. */
4243
std::cout << ansi::BG_BLACK;
43-
std::cout << ansi::BOLD << ansi::WHITE << banner << ansi::RESET;
44+
std::cout << ansi::BOLD << ansi::BRIGHT_WHITE << banner << ansi::RESET;
4445
std::cout << ansi::BG_BLACK;
45-
std::cout << ansi::BOLD << ansi::CYAN << banner2 << ansi::RESET;
46+
std::cout << ansi::BOLD << ansi::BRIGHT_CYAN << banner2 << ansi::RESET;
4647
std::cout << ansi::BG_BLACK;
47-
std::cout << ansi::BOLD << ansi::BLUE << banner3 << ansi::RESET << "\n" << "\n";
48+
std::cout << ansi::BOLD << ansi::BRIGHT_BLUE << banner3 << ansi::RESET;
49+
/* Print the version. */
50+
std::cout << ansi::BG_BLACK;
51+
std::cout << ansi::BOLD << ansi::BRIGHT_BLUE << "version " << APP_VERSION << " " << ansi::RESET << "\n" << "\n";
4852
}
4953

5054
void option_exit() {
51-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
55+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
5256
exit(0);
5357
}
5458

5559
void option_timer() {
56-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
57-
std::cout << ansi::CYAN << "Enter a number of seconds: " << ansi::RESET;
60+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
61+
std::cout << ansi::BRIGHT_CYAN << "Enter a number of seconds: " << ansi::RESET;
5862
std::string seconds;
5963
std::getline(std::cin, seconds);
6064
int seconds_int;
6165
try {
6266
seconds_int = std::stoi(seconds);
6367
}
6468
catch (std::invalid_argument& e) {
65-
std::cerr << ansi::RED << e.what() << ansi::RESET << "\n";
69+
std::cerr << ansi::BRIGHT_RED << e.what() << ansi::RESET << "\n";
6670
std::this_thread::sleep_for(std::chrono::seconds(1));
6771
initialize();
6872
}
6973
catch (std::out_of_range& e) {
70-
std::cerr << ansi::RED << e.what() << ansi::RESET << "\n";
74+
std::cerr << ansi::BRIGHT_RED << e.what() << ansi::RESET << "\n";
7175
std::this_thread::sleep_for(std::chrono::seconds(1));
7276
initialize();
7377
}
7478
int timer = seconds_int;
7579
while (timer > 0) {
76-
std::cout << ansi::WHITE << timer << ansi::RESET << "\n";
80+
std::cout << ansi::BRIGHT_WHITE << timer << ansi::RESET << "\n";
7781
std::this_thread::sleep_for(std::chrono::seconds(1));
7882
timer--;
7983
}
8084
initialize();
8185
}
8286

8387
void option_discord() {
84-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
85-
std::cout << ansi::CYAN << "Enter Discord webhook URL: " << ansi::RESET;
88+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
89+
std::cout << ansi::BRIGHT_CYAN << "Enter Discord webhook URL: " << ansi::RESET;
8690
std::string webhook_url;
8791
std::getline(std::cin, webhook_url);
8892

89-
std::cout << ansi::CYAN << "Enter message to send: " << ansi::RESET;
93+
std::cout << ansi::BRIGHT_CYAN << "Enter message to send: " << ansi::RESET;
9094
std::string message;
9195
std::getline(std::cin, message);
9296

@@ -95,29 +99,29 @@ void option_discord() {
9599
}
96100

97101
void option_telegram() {
98-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
99-
std::cout << ansi::CYAN << "Enter Telegram bot token: " << ansi::RESET;
102+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
103+
std::cout << ansi::BRIGHT_CYAN << "Enter Telegram bot token: " << ansi::RESET;
100104
std::string bot_token;
101105
std::getline(std::cin, bot_token);
102106

103-
std::cout << ansi::CYAN << "Enter Telegram chat ID: " << ansi::RESET;
107+
std::cout << ansi::BRIGHT_CYAN << "Enter Telegram chat ID: " << ansi::RESET;
104108
std::string chat_id;
105109
std::getline(std::cin, chat_id);
106110

107-
std::cout << ansi::CYAN << "Enter message to send: " << ansi::RESET;
111+
std::cout << ansi::BRIGHT_CYAN << "Enter message to send: " << ansi::RESET;
108112
std::string message;
109113
std::getline(std::cin, message);
110114

111115
telegram::send_message(bot_token, chat_id, message);
112116
initialize();
113117
}
114118

115-
#ifdef __linux__
119+
#ifdef PLATFORM_POSIX
116120
void option_password() {
117-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
118-
std::cout << ansi::GREEN << "Generated password: " << ansi::RESET << "\n";
121+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
122+
std::cout << ansi::BRIGHT_GREEN << "Generated password: " << ansi::RESET << "\n";
119123
int success = system("head -c 1000 /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 32; echo"); // More secure than using a timestamp seed
120-
std::cout << ansi::CYAN << "Press any key to continue...\n" << ansi::RESET;
124+
std::cout << ansi::BRIGHT_CYAN << "Press any key to continue...\n" << ansi::RESET;
121125
char_utils::get_char();
122126
initialize();
123127
}
@@ -126,23 +130,23 @@ void option_password() {
126130
void menu() {
127131
console::clear();
128132
banner();
129-
std::cout << ansi::BOLD << ansi::ITALIC << ansi::UNDERLINE << ansi::BG_BLUE << ansi::CYAN;
133+
std::cout << ansi::BOLD << ansi::ITALIC << ansi::UNDERLINE << ansi::BG_BRIGHT_BLUE << ansi::BRIGHT_CYAN;
130134
std::cout << "OPTIONS: \n";
131135
std::cout << ansi::RESET;
132-
std::cout << ansi::UNDERLINE << ansi::BG_BLUE << ansi::CYAN;
136+
std::cout << ansi::UNDERLINE << ansi::BG_BRIGHT_BLUE << ansi::BRIGHT_CYAN;
133137
std::cout << check_Vector[0] << " exit \n";
134138
std::cout << check_Vector[1] << " timer \n";
135139
std::cout << check_Vector[2] << " send Discord message \n";
136140
std::cout << check_Vector[3] << " send Telegram message \n";
137-
#ifdef __linux__
141+
#ifdef PLATFORM_POSIX
138142
std::cout << check_Vector[4] << " generate secure password\n";
139143
std::cout << check_Vector[5] << " calculator shell \n";
140-
#elif defined(_WIN32)
144+
#elif defined(PLATFORM_WINDOWS)
141145
std::cout << check_Vector[4] << " calculator shell \n";
142146
#endif
143147
std::cout << "\n";
144148
std::cout << ansi::RESET;
145-
std::cout << ansi::CYAN << "Use W/S to navigate, E to select.\n" << ansi::RESET;
149+
std::cout << ansi::BRIGHT_CYAN << "Use W/S to navigate, E to select.\n" << ansi::RESET;
146150
}
147151

148152
void read() {
@@ -196,20 +200,20 @@ void read() {
196200
case 3:
197201
option_telegram();
198202
break;
199-
#ifdef __linux__
203+
#ifdef PLATFORM_POSIX
200204
case 4:
201205
option_password();
202206
break;
203207
case 5:
204-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
205-
std::cout << ansi::BOLD << ansi::ITALIC << ansi::CYAN << "Welcome to the calculator shell, type 'help' for commands.\n" << ansi::RESET;
208+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
209+
std::cout << ansi::BOLD << ansi::ITALIC << ansi::BRIGHT_CYAN << "Welcome to the calculator shell, type 'help' for commands.\n" << ansi::RESET;
206210
option_shell();
207211
initialize();
208212
break;
209-
#elif defined(_WIN32)
213+
#elif defined(PLATFORM_WINDOWS)
210214
case 4:
211-
std::cout << ansi::GREEN << "Valid choice!" << ansi::RESET << "\n";
212-
std::cout << ansi::BOLD << ansi::ITALIC << ansi::CYAN << "Welcome to the calculator shell, type 'help' for commands.\n" << ansi::RESET;
215+
std::cout << ansi::BRIGHT_GREEN << "Valid choice!" << ansi::RESET << "\n";
216+
std::cout << ansi::BOLD << ansi::ITALIC << ansi::BRIGHT_CYAN << "Welcome to the calculator shell, type 'help' for commands.\n" << ansi::RESET;
213217
option_shell();
214218
initialize();
215219
break;
@@ -219,7 +223,7 @@ void read() {
219223
}
220224
}
221225
else {
222-
std::cerr << ansi::RED << "Invalid choice." << ansi::RESET << "\n";
226+
std::cerr << ansi::BRIGHT_RED << "Invalid choice." << ansi::RESET << "\n";
223227
std::this_thread::sleep_for(std::chrono::seconds(1));
224228
initialize();
225229
}
@@ -233,18 +237,21 @@ void initialize() {
233237
}
234238

235239
void checkCurlIsInstalled() {
236-
#ifdef _WIN32
240+
#ifdef PLATFORM_WINDOWS
237241
int curl = system("curl --version >nul 2>&1");
238242
if (curl != 0) {
239243
std::cout << "Curl not installed. Install it by running: winget install cURL.cURL\n";
240244
exit(1);
241245
}
242-
#else
246+
#elif defined(PLATFORM_POSIX)
243247
int curl = system("curl --version >/dev/null 2>&1");
244248
if (curl != 0) {
245-
std::cout << "Curl not installed. As a Linux user, you are expected to know how to install it.\n";
249+
std::cout << "Curl not installed.\n";
246250
exit(1);
247251
}
252+
#else
253+
std::cout << "No.\n";
254+
exit(1);
248255
#endif
249256
}
250257

0 commit comments

Comments
 (0)