commit:     82f8dc2ee9ba0ff97924df0dcc3feba3935b979c
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Apr  7 17:14:08 2022 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Apr  7 17:14:08 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=82f8dc2e

libq/dep: print single nodes on a single line

condense conditional and use-deps to a single line when there's a single
target, e.g.:

use? ( cat/pkg )

instead of

use? (
    cat/pkg
)

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

 libq/dep.c                 | 34 +++++++++++++++++++++++++++++-----
 tests/qdepends/list03.good |  4 +---
 tests/qdepends/list04.good |  4 +---
 tests/qdepends/list05.good |  4 +---
 4 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/libq/dep.c b/libq/dep.c
index d431367..99629e7 100644
--- a/libq/dep.c
+++ b/libq/dep.c
@@ -238,6 +238,13 @@ dep_print_tree(
        size_t s;
        int indent = 4;  /* Gentoo 4-wide indent standard */
        depend_atom *d = NULL;
+       bool singlechild = false;
+       bool nonewline = false;
+
+       if (verbose < 0) {
+               nonewline = true;
+               verbose = -verbose - 1;
+       }
 
        assert(root);
        if (root->type == DEP_NULL)
@@ -248,7 +255,8 @@ dep_print_tree(
 
        if (verbose > 0)
                fprintf(fp, "Node [%s]: ", _dep_names[root->type]);
-       /*printf("Node %p [%s] %p %p %p: ", root, _dep_names[root->type], 
root->parent, root->neighbor, root->children);*/
+       /*printf("Node %p [%s] %p %p %p: ", root, _dep_names[root->type],
+        *       root->parent, root->neighbor, root->children);*/
        if (root->type == DEP_OR)
                fprintf(fp, "|| (");
        if (root->info) {
@@ -286,14 +294,30 @@ dep_print_tree(
                if (root->type == DEP_USE)
                        fprintf(fp, "? (");
        }
-       fprintf(fp, "\n");
+
+       if (root->children &&
+               root->children->children == NULL &&
+               root->children->neighbor == NULL)
+       {
+               singlechild = true;
+       }
+
+       if (singlechild)
+               fprintf(fp, " ");
+       else if (!nonewline)
+               fprintf(fp, "\n");
 
        if (root->children)
-               dep_print_tree(fp, root->children, space+1, hlatoms, hlcolor, 
verbose);
+               dep_print_tree(fp, root->children,
+                                          singlechild ? 0 : space + 1,
+                                          hlatoms, hlcolor, singlechild ? 
-verbose - 1 : verbose);
 
        if (root->type == DEP_OR || root->type == DEP_USE) {
-               for (s = space; s; --s)
-                       fprintf(fp, "%*s", indent, "");
+               if (singlechild)
+                       fprintf(fp, " ");
+               else
+                       for (s = space; s; --s)
+                               fprintf(fp, "%*s", indent, "");
                fprintf(fp, ")\n");
        }
  this_node_sucks:

diff --git a/tests/qdepends/list03.good b/tests/qdepends/list03.good
index f66b636..d0eb5d2 100644
--- a/tests/qdepends/list03.good
+++ b/tests/qdepends/list03.good
@@ -1,5 +1,3 @@
 DEPEND="
-    foo? (
-        a/b
-    )
+    foo? ( a/b )
 "

diff --git a/tests/qdepends/list04.good b/tests/qdepends/list04.good
index 2457caf..7f0887a 100644
--- a/tests/qdepends/list04.good
+++ b/tests/qdepends/list04.good
@@ -1,5 +1,3 @@
 DEPEND="
-    || (
-        a/b
-    )
+    || ( a/b )
 "

diff --git a/tests/qdepends/list05.good b/tests/qdepends/list05.good
index 0b7d420..868efae 100644
--- a/tests/qdepends/list05.good
+++ b/tests/qdepends/list05.good
@@ -1,9 +1,7 @@
 DEPEND="
     || (
         || (
-            || (
-                x
-            )
+            || ( x )
             a
         )
     )

Reply via email to