shared: highlight directives when dumping configs

We already highlight sections and "de-highlight" comments, so let's add
the last piece of the puzzle and highlight the configuration directives
to visually distinguish them from the values.

Closes: #13416
This commit is contained in:
Frantisek Sumsal
2023-12-07 10:52:40 +01:00
parent 9f7d189923
commit 22b0b7bfbf

View File

@@ -213,7 +213,7 @@ static int cat_file(const char *filename, bool newline, CatFlags flags) {
break;
LineType line_type = classify_line_type(line, flags);
if (flags & CAT_TLDR) {
if (FLAGS_SET(flags, CAT_TLDR)) {
if (line_type == LINE_SECTION) {
/* The start of a section, let's not print it yet. */
free_and_replace(section, line);
@@ -236,6 +236,28 @@ static int cat_file(const char *filename, bool newline, CatFlags flags) {
}
}
/* Highlight the left side (directive) of a Foo=bar assignment */
if (FLAGS_SET(flags, CAT_FORMAT_HAS_SECTIONS) && line_type == LINE_NORMAL) {
const char *p = strchr(line, '=');
if (p) {
_cleanup_free_ char *highlighted = NULL, *directive = NULL;
directive = strndup(line, p - line);
if (!directive)
return log_oom();
highlighted = strjoin(ansi_highlight_green(),
directive,
"=",
ansi_normal(),
p + 1);
if (!highlighted)
return log_oom();
free_and_replace(line, highlighted);
}
}
printf("%s%s%s\n",
line_type == LINE_SECTION ? ansi_highlight_cyan() :
line_type == LINE_COMMENT ? ansi_highlight_grey() :