From c96a22e035ad42b440778c042fbacba424f90027 Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Tue, 26 Nov 2019 12:19:51 +0100 Subject: [PATCH] Update depency-tree option --- src/mio.py | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/mio.py b/src/mio.py index 57afc28..abf5681 100755 --- a/src/mio.py +++ b/src/mio.py @@ -17,7 +17,7 @@ from mio.exception import * from mio.log import log, MUTE, SILENT, NORMAL, VERBOSE import locale -def parse_with_path(path, filename, repository): +def parse_with_path(path, filename, repository=None): f = mio.filecache.loadfile(path, filename) tree = mio.parser.parse(f.filename, url=f.key) @@ -26,20 +26,25 @@ def parse_with_path(path, filename, repository): # Transform comps to canonical form tree = mio.transform.from_fedora(tree) join = mio.transform.join + pass elif tree._tag == "hostinfo": # Transform hostinfo to canonical form tree = mio.transform.from_hostinfo(tree) + pass elif tree._tag == "mio": # Transform mio tree to canonical form tree = mio.transform.from_mio(tree) + pass + if repository != None: + repository.add(tree._group_, join=join) + pass + return tree - repository.add(tree._group_, join=join) - -def parse(filename, repository): +def parse(filename, repository=None): for p in options.path: try: - parse_with_path(p, filename, repository) - return + tree = parse_with_path(p, filename, repository) + return tree except IOError as e: print(e) raise @@ -174,7 +179,7 @@ if __name__ == '__main__': metavar="TARGET", help="test TARGET") optParser.add_argument("--dependency-tree", - action="append", default=[], + action="append", nargs='*', default=None, metavar="TARGET", help="print dependency tree for TARGET") optParser.add_argument("-v","--verbose", @@ -305,7 +310,7 @@ if __name__ == '__main__': pass pass - if options.dependency_tree: + if options.dependency_tree != None: def dump_tree(name, indent=0): print('%s%s' % (' '*indent, name)) tree = rules.get(name) @@ -315,20 +320,24 @@ if __name__ == '__main__': pass pass for s in tree._symlink_: - print('%s[s] %s' % (' '*(indent+1), s.name[0])) - print('%s -> %s' % (' '*(indent+1), s.value[0])) + print('%s[s] %s -> %s' % (' '*(indent+1), + s.name[0], + s.value[0])) pass for f in tree._file_: - print('%s[f] %s' % (' '*(indent+1), f.name[0])) - if f.source[0]: - print('%s = %s' % (' '*(indent+1), f.source[0])) - pass + print('%s[f] %s = %s' % (' '*(indent+1), + f.name[0], + f.source[0] or f.name[0])) pass for d in tree._dependency_: dump_tree(d.name[0], indent+1) pass pass - for target in options.dependency_tree: + todo = [i for l in options.dependency_tree for i in l] + if len(todo) == 0: + tree = parse('hostinfo.xml') + todo = [ h.name[0] for h in tree._group_] + for target in todo: dump_tree(target) pass pass -- GitLab