commit:     ed9eec8743923166205a4fdc7f9bb073ad6c5ba0
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun May  5 20:04:07 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun May  5 20:04:07 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=ed9eec87

libq/atom: add colour to formatted atoms

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 libq/atom.c | 53 ++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 38 insertions(+), 15 deletions(-)

diff --git a/libq/atom.c b/libq/atom.c
index 8eb9ac6..65c8a26 100644
--- a/libq/atom.c
+++ b/libq/atom.c
@@ -610,7 +610,7 @@ atom_to_string_r(char *buf, size_t buflen, depend_atom *a)
  *  %{keyword}: Always display the field that matches "keyword" or <unset>
  *  %[keyword]: Only display the field when it's set (or pverbose)
  * The possible "keywords" are:
- *  CATEGORY  P  PN  PV  PVR  PF  PR  SLOT
+ *  CATEGORY  P  PN  PV  PVR  PF  PR  SLOT  REPO  USE
  *    - these are all the standard portage variables (so see ebuild(5))
  *  pfx - the version qualifier if set (e.g. > < = !)
  *  sfx - the version qualifier if set (e.g. *)
@@ -663,39 +663,52 @@ atom_format_r(
 #define HN(X) (X ? X : "<unset>")
                                if (!strncmp("CATEGORY", fmt, len)) {
                                        if (showit || atom->CATEGORY)
-                                               append_buf(buf, buflen, "%s", 
HN(atom->CATEGORY));
+                                               append_buf(buf, buflen, 
"%s%s%s%s",
+                                                               BOLD, 
HN(atom->CATEGORY),
+                                                               bracket == '[' 
? "/" : "", NORM);
                                } else if (!strncmp("P", fmt, len)) {
                                        if (showit || atom->P)
-                                               append_buf(buf, buflen, "%s", 
HN(atom->P));
+                                               append_buf(buf, buflen, 
"%s%s%s",
+                                                               BLUE, 
HN(atom->P), NORM);
                                } else if (!strncmp("PN", fmt, len)) {
                                        if (showit || atom->PN)
-                                               append_buf(buf, buflen, "%s", 
HN(atom->PN));
+                                               append_buf(buf, buflen, 
"%s%s%s",
+                                                               BLUE, 
HN(atom->PN), NORM);
                                } else if (!strncmp("PV", fmt, len)) {
                                        if (showit || atom->PV)
-                                               append_buf(buf, buflen, "%s", 
HN(atom->PV));
+                                               append_buf(buf, buflen, 
"%s%s%s",
+                                                               DKBLUE, 
HN(atom->PV), NORM);
                                } else if (!strncmp("PVR", fmt, len)) {
                                        if (showit || atom->PVR)
-                                               append_buf(buf, buflen, "%s", 
HN(atom->PVR));
+                                               append_buf(buf, buflen, 
"%s%s%s",
+                                                               DKBLUE, 
HN(atom->PVR), NORM);
                                } else if (!strncmp("PF", fmt, len)) {
-                                       append_buf(buf, buflen, "%s", atom->PN);
+                                       append_buf(buf, buflen, "%s%s%s", BLUE, 
atom->PN, NORM);
                                        if (atom->PV)
-                                               append_buf(buf, buflen, "-%s", 
atom->PV);
+                                               append_buf(buf, buflen, 
"%s-%s%s",
+                                                               DKBLUE, 
atom->PV, NORM);
                                        if (atom->PR_int)
-                                               append_buf(buf, buflen,"-r%i", 
atom->PR_int);
+                                               append_buf(buf, 
buflen,"%s-r%d%s",
+                                                               DKBLUE, 
atom->PR_int, NORM);
                                } else if (!strncmp("PR", fmt, len)) {
                                        if (showit || atom->PR_int)
-                                               append_buf(buf, buflen, "r%i", 
atom->PR_int);
+                                               append_buf(buf, buflen, 
"%sr%d%s",
+                                                               DKBLUE, 
atom->PR_int, NORM);
                                } else if (!strncmp("SLOT", fmt, len)) {
                                        if (showit || atom->SLOT)
-                                               append_buf(buf, buflen, 
"%s%s%s%s%s",
-                                                               atom->SLOT ? 
":" : "<unset>",
-                                                               atom->SLOT ? 
atom->SLOT : "",
+                                               append_buf(buf, buflen, 
"%s%s%s%s%s%s%s",
+                                                               YELLOW,
+                                                               bracket == '[' 
? ":" : "",
+                                                               atom->SLOT ? 
atom->SLOT : "<unset>",
                                                                atom->SUBSLOT ? 
"/" : "",
                                                                atom->SUBSLOT ? 
atom->SUBSLOT : "",
-                                                               
atom_slotdep_str[atom->slotdep]);
+                                                               
atom_slotdep_str[atom->slotdep],
+                                                               NORM);
                                } else if (!strncmp("REPO", fmt, len)) {
                                        if (showit || atom->REPO)
-                                               append_buf(buf, buflen, "::%s", 
HN(atom->REPO));
+                                               append_buf(buf, buflen, 
"%s%s%s%s",
+                                                               GREEN, bracket 
== '[' ? "::" : "",
+                                                               HN(atom->REPO), 
NORM);
                                } else if (!strncmp("pfx", fmt, len)) {
                                        if (showit || atom->pfx_op != 
ATOM_OP_NONE)
                                                append_buf(buf, buflen, "%s",
@@ -706,6 +719,16 @@ atom_format_r(
                                                append_buf(buf, buflen, "%s",
                                                                atom->sfx_op == 
ATOM_OP_NONE ?
                                                                "<unset>" : 
atom_op_str[atom->sfx_op]);
+                               } else if (!strncmp("USE", fmt, len)) {
+                                       if (showit || atom->usedeps) {
+                                               atom_usedep *ud;
+                                               append_buf(buf, buflen, "%s", 
"[");
+                                               for (ud = atom->usedeps; ud != 
NULL; ud = ud->next)
+                                                       append_buf(buf, buflen, 
"%s%s%s%s%s%s",
+                                                                       
MAGENTA, atom_usecond_str[ud->pfx_cond],
+                                                                       
ud->use, atom_usecond_str[ud->sfx_cond],
+                                                                       NORM, 
ud->next == NULL ? "]" : ",");
+                                       }
                                } else
                                        append_buf(buf, buflen, "<BAD:%.*s>", 
(int)len, fmt);
                                ++p;

Reply via email to