X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/blobdiff_plain/238c082941e029b3f98d0812c6a99ac52e60591c..56adc1baf4fefbc3571311905eb0dc2954fea8cb:/scripts/invirt-getconf diff --git a/scripts/invirt-getconf b/scripts/invirt-getconf index d510a1f..07e475b 100755 --- a/scripts/invirt-getconf +++ b/scripts/invirt-getconf @@ -23,7 +23,7 @@ import yaml import invirt -class InvirtException(Exception): +class PathResolutionException(Exception): pass @@ -45,24 +45,30 @@ def main(): try: component = int(component) except ValueError: - raise InvirtException(f'{progress}: node a list; integer path component required, ' + raise PathResolutionException(f'{progress}: node is a list; integer path component required, ' 'but got "{component}"') try: conf = conf[component] except IndexError: - raise InvirtException(f'{progress}: index {component} out of range') + raise PathResolutionException(f'{progress}: index {component} out of range') elif isinstance(conf, dict): try: conf = conf[component] except KeyError: - raise InvirtException(f'{progress}: key "{component}" not found') - except IndexError: - raise InvirtException(f'{progress}: index {component} out of range') + raise PathResolutionException(f'{progress}: key "{component}" not found') else: - raise InvirtException(f'{progress}: node has no children (atomic datum)') + raise PathResolutionException(f'{progress}: node has no children (atomic datum)') + + if args.ls: + if isinstance(conf, list): + for i in range(len(conf)): + print(i) + elif isinstance(conf, dict): + for k in conf: + print(k) else: - raise InvirtException(f'{".".join(components)}: node has no children (atomic datum)') + raise PathResolutionException(f'{".".join(components)}: node has no children (atomic datum)') else: if isinstance(conf, (dict, list)): print(conf) @@ -71,4 +77,4 @@ def main(): if __name__ == '__main__': - exit(main(argv)) + main()