Merge pull request #2622 from laytan/detect-unix-colors-support

detect unix color support
This commit is contained in:
Jeroen van Rijn
2023-07-02 21:34:34 +02:00
committed by GitHub
+23 -1
View File
@@ -2549,6 +2549,22 @@ gb_internal int strip_semicolons(Parser *parser) {
gb_internal void init_terminal(void) { gb_internal void init_terminal(void) {
build_context.has_ansi_terminal_colours = false; build_context.has_ansi_terminal_colours = false;
gbAllocator a = heap_allocator();
char const *no_color = gb_get_env("NO_COLOR", a);
defer (gb_free(a, cast(void *)no_color));
if (no_color != nullptr) {
return;
}
char const *force_color = gb_get_env("FORCE_COLOR", a);
defer (gb_free(a, cast(void *)force_color));
if (force_color != nullptr) {
build_context.has_ansi_terminal_colours = true;
return;
}
#if defined(GB_SYSTEM_WINDOWS) #if defined(GB_SYSTEM_WINDOWS)
HANDLE hnd = GetStdHandle(STD_ERROR_HANDLE); HANDLE hnd = GetStdHandle(STD_ERROR_HANDLE);
DWORD mode = 0; DWORD mode = 0;
@@ -2558,10 +2574,16 @@ gb_internal void init_terminal(void) {
build_context.has_ansi_terminal_colours = true; build_context.has_ansi_terminal_colours = true;
} }
} }
#elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX)
char const *term_ = gb_get_env("TERM", a);
defer (gb_free(a, cast(void *)term_));
String term = make_string_c(term_);
if (!str_eq(term, str_lit("dumb")) && isatty(STDERR_FILENO)) {
build_context.has_ansi_terminal_colours = true;
}
#endif #endif
if (!build_context.has_ansi_terminal_colours) { if (!build_context.has_ansi_terminal_colours) {
gbAllocator a = heap_allocator();
char const *odin_terminal_ = gb_get_env("ODIN_TERMINAL", a); char const *odin_terminal_ = gb_get_env("ODIN_TERMINAL", a);
defer (gb_free(a, cast(void *)odin_terminal_)); defer (gb_free(a, cast(void *)odin_terminal_));
String odin_terminal = make_string_c(odin_terminal_); String odin_terminal = make_string_c(odin_terminal_);