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
157160void 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)
0 commit comments