From 4f2276420be2bb88138e1bea0e61b4911f6fdf45 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Mon, 4 Nov 2019 18:08:36 +0100
Subject: [PATCH] Add dependency-tree option

---
 src/mio.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/src/mio.py b/src/mio.py
index 24b25d6..7b037c4 100755
--- a/src/mio.py
+++ b/src/mio.py
@@ -173,6 +173,10 @@ if __name__ == '__main__':
                            action="append", default=[],
                            metavar="TARGET",
                            help="test TARGET")
+    optParser.add_argument("--dependency-tree",
+                           action="append", default=[],
+                           metavar="TARGET",
+                           help="print dependency tree for TARGET")
     optParser.add_argument("-v","--verbose",
                            action="count",
                            dest="verbose", default=0,
@@ -301,6 +305,29 @@ if __name__ == '__main__':
             pass
         pass
 
+    if options.dependency_tree:
+        def dump_tree(name, indent=0):
+            print('%s%s' % ('  '*indent, name))
+            tree = rules.get(name)
+            for s in tree._symlink_:
+                print('%s* %s' % ('  '*(indent+1), s.name[0]))
+                print('%s-> %s' % ('  '*(indent+2), s.value[0]))
+                pass
+            for f in tree._file_:
+                print('%s* %s' % ('  '*(indent+1), f.name[0]))
+                if f.source[0]:
+                    print('%s= %s' % ('  '*(indent+2), f.source[0]))
+                    pass
+                pass
+            for d in tree._dependency_:
+                dump_tree(d.name[0], indent+1)
+                pass
+            pass
+        for target in options.dependency_tree:
+            dump_tree(target)
+            pass
+        pass
+
     if options.test:
         installer = mio.installer.Installer(rules)
         for g in options.test:
-- 
GitLab