@@ -199,14 +199,17 @@ static auto setChrootDir(CommandLine & cmdline, std::string_view val) {
199199
200200void CommandLine::parse (int argc, char * argv[]) {
201201
202- const char * progname = (argc ? argv[0 ] : WSDDN_PROGNAME);
202+ const char * const progname = (argc ? argv[0 ] : WSDDN_PROGNAME);
203+ ColorStatus envColorStatus = environmentColorStatus ();
203204
204205 Argum::Parser parser;
205206 // Program options
206207 parser.add (Option (" --help" , " -h" ).
207208 help (" show this help message and exit" ).
208209 handler ([&]() {
209- fmt::print (" {}" , parser.formatHelp (progname).c_str ());
210+
211+ auto colorizer = colorizerForFile (envColorStatus, stdout);
212+ fmt::print (" {}" , parser.formatHelp (progname, terminalWidth (stdout), colorizer));
210213 exit (EXIT_SUCCESS);
211214 }));
212215 parser.add (Option (" --version" , " -v" ).
@@ -335,7 +338,7 @@ void CommandLine::parse(int argc, char * argv[]) {
335338 // Behavior options
336339 parser.add (Option (" --log-level" ).
337340 argName (" LEVEL" ).
338- help (" set log level (default = 4). Log levels range from 0 (disable logging) to 6 (detailed trace)."
341+ help (" set log level (default = 4). Log levels range from 0 (disable logging) to 6 (detailed trace).\n "
339342 " Passing values bigger than 6 is equivalent to 6" ).
340343 occurs (Argum::neverOrOnce).
341344 handler ([this ](std::string_view val){
@@ -386,8 +389,9 @@ void CommandLine::parse(int argc, char * argv[]) {
386389 try {
387390 parser.parse (argc, argv);
388391 } catch (ParsingException & ex) {
389- fmt::print (stderr, " {}\n\n " , ex.message ());
390- fmt::print (stderr, " {}" , parser.formatUsage (progname));
392+ auto colorizer = colorizerForFile (envColorStatus, stderr);
393+ fmt::print (stderr, " {}\n\n " , colorizer.error (ex.message ()));
394+ fmt::print (stderr, " {}" , parser.formatUsage (progname, terminalWidth (stderr), colorizer));
391395 exit (EXIT_FAILURE);
392396 }
393397}
0 commit comments