Skip to content

Commit 7d2526f

Browse files
committed
switch to use termcolor
1 parent 533d019 commit 7d2526f

File tree

5 files changed

+21
-22
lines changed

5 files changed

+21
-22
lines changed

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ message(STATUS "Building git2cpp v${CMAKE_PROJECT_VERSION}")
3333
# ============
3434

3535
find_package(libgit2)
36+
find_package(termcolor)
3637
# CLI11 is a single header, not packaged for cmake
3738

3839
# Build
@@ -86,4 +87,4 @@ set(GIT2CPP_SRC
8687
)
8788

8889
add_executable(git2cpp ${GIT2CPP_SRC})
89-
target_link_libraries(git2cpp PRIVATE libgit2::libgit2package)
90+
target_link_libraries(git2cpp PRIVATE libgit2::libgit2package termcolor::termcolor)

dev-environment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ dependencies:
88
- pkg-config
99
- python
1010
- pytest
11+
- termcolor-cpp
1112
# Missing dependency from libgit2
1213
- zlib

src/subcommand/status_subcommand.cpp

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <string>
55

66
#include <git2.h>
7+
#include <termcolor/termcolor.hpp>
78

89
#include "status_subcommand.hpp"
910
#include "../wrapper/status_wrapper.hpp"
@@ -139,31 +140,33 @@ std::vector<print_entry> get_entries_to_print(git_status_t status, status_list_w
139140
return entries_to_print;
140141
}
141142

142-
void print_entries(std::vector<print_entry> entries_to_print, bool is_long, std::string colour)
143+
using str_colour_fn = std::ostream& (*)(std::ostream&);
144+
145+
void print_entries(std::vector<print_entry> entries_to_print, bool is_long, str_colour_fn colour)
143146
{
144147
for (auto e: entries_to_print)
145148
{
146149
if (is_long)
147150
{
148-
std::cout << colour << e.status << e.item << message_colour.at("colour_close") << std::endl;
151+
std::cout << colour << e.status << e.item << termcolor::reset << std::endl;
149152
}
150153
else
151154
{
152-
std::cout << colour << e.status << message_colour.at("colour_close") << e.item << std::endl;
155+
std::cout << colour << e.status << termcolor::reset << e.item << std::endl;
153156
}
154157
}
155158
}
156159

157160
void print_not_tracked(const std::vector<print_entry>& entries_to_print, const std::set<std::string>& tracked_dir_set,
158-
std::set<std::string>& untracked_dir_set, bool is_long, std::string colour)
161+
std::set<std::string>& untracked_dir_set, bool is_long, str_colour_fn colour)
159162
{
160163
std::vector<print_entry> not_tracked_entries_to_print{};
161164
for (auto e: entries_to_print)
162165
{
163166
const size_t first_slash_idx = e.item.find('/');
164167
if (std::string::npos != first_slash_idx)
165168
{
166-
auto directory = e.item.substr(0, first_slash_idx) + "/";
169+
auto directory = "\t" + e.item.substr(0, first_slash_idx) + "/";
167170
if (tracked_dir_set.contains(directory))
168171
{
169172
not_tracked_entries_to_print.push_back(e);
@@ -230,10 +233,10 @@ void status_subcommand::run()
230233

231234
if (sl.has_tobecommited_header())
232235
{
233-
std::string colour = message_colour.at("green");
236+
str_colour_fn colour = termcolor::green;
234237
if (is_long)
235238
{
236-
std::cout << tobecommited_header << std::endl;
239+
std::cout << tobecommited_header;
237240
}
238241
print_entries(get_entries_to_print(GIT_STATUS_INDEX_NEW, sl, true, of, &tracked_dir_set), is_long, colour);
239242
print_entries(get_entries_to_print(GIT_STATUS_INDEX_MODIFIED, sl, true, of, &tracked_dir_set), is_long, colour);
@@ -248,10 +251,10 @@ void status_subcommand::run()
248251

249252
if (sl.has_notstagged_header())
250253
{
251-
std::string colour = message_colour.at("red");
254+
str_colour_fn colour = termcolor::red;
252255
if (is_long)
253256
{
254-
std::cout << notstagged_header << std::endl;
257+
std::cout << notstagged_header;
255258
}
256259
print_entries(get_entries_to_print(GIT_STATUS_WT_MODIFIED, sl, false, of, &tracked_dir_set), is_long, colour);
257260
print_entries(get_entries_to_print(GIT_STATUS_WT_DELETED, sl, false, of, &tracked_dir_set), is_long, colour);
@@ -265,10 +268,10 @@ void status_subcommand::run()
265268

266269
if (sl.has_untracked_header())
267270
{
268-
std::string colour = message_colour.at("red");
271+
str_colour_fn colour = termcolor::red;
269272
if (is_long)
270273
{
271-
std::cout << untracked_header << std::endl;
274+
std::cout << untracked_header;
272275
}
273276
print_not_tracked(get_entries_to_print(GIT_STATUS_WT_NEW, sl, false, of), tracked_dir_set, untracked_dir_set, is_long, colour);
274277
if (is_long)
@@ -279,10 +282,10 @@ void status_subcommand::run()
279282

280283
// if (sl.has_ignored_header())
281284
// {
282-
// std::string colour = message_colour.at("red");
285+
// str_colour_fn colour = termcolor::red;
283286
// if (is_long)
284287
// {
285-
// std::cout << ignored_header << std::endl;
288+
// std::cout << ignored_header;
286289
// }
287290
// print_not_tracked(get_entries_to_print(GIT_STATUS_IGNORED, sl, false, of), tracked_dir_set, untracked_dir_set, is_long, colour);
288291
// if (is_long)

src/utils/common.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#include <filesystem>
2+
#include <iostream>
3+
#include <unistd.h>
24

35
#include <git2.h>
46

src/utils/common.hpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ class libgit2_object : private noncopyable_nonmovable
2727
~libgit2_object();
2828
};
2929

30-
const std::map<std::string, std::string> message_colour =
31-
{
32-
{"red", "\033[0;31m"},
33-
{"green", "\033[0;32m"},
34-
{"yellow", "\033[0;33m"},
35-
{"colour_close","\033[0m"},
36-
};
37-
3830
std::string get_current_git_path();
3931

4032
class git_strarray_wrapper

0 commit comments

Comments
 (0)