Remove safestructs which wasn't being used anywhere
[invirt/packages/invirt-base.git] / scripts / invirt-getconf
index 5b3681b..07e475b 100755 (executable)
@@ -23,7 +23,7 @@ import yaml
 import invirt
 
 
-class InvirtException(Exception):
+class PathResolutionException(Exception):
     pass
 
 
@@ -37,47 +37,44 @@ def main():
 
     components = args.path.split('.')
 
+    conf = invirt.config.load(args.refresh)
+    for i, component in enumerate(components):
+        progress = '.'.join(components[:i])
+
+        if isinstance(conf, list):
+            try:
+                component = int(component)
+            except ValueError:
+                raise PathResolutionException(f'{progress}: node is a list; integer path component required, '
+                                      'but got "{component}"')
+
+            try:
+                conf = conf[component]
+            except IndexError:
+                raise PathResolutionException(f'{progress}: index {component} out of range')
+        elif isinstance(conf, dict):
+            try:
+                conf = conf[component]
+            except KeyError:
+                raise PathResolutionException(f'{progress}: key "{component}" not found')
         else:
-            components = []
-
-        conf = config.load(opts.refresh)
-        for i, component in enumerate(components):
-            progress = '.'.join(components[:i])
-            if type(conf) not in (dict, list):
-                raise invirt_exception(
-                        '%s: node has no children (atomic datum)' % progress)
-            if type(conf) == list:
-                try: component = int(component)
-                except: raise invirt_exception(
-                        '%s: node a list; integer path component required, '
-                        'but got "%s"' % (progress, component))
-            try: conf = conf[component]
-            except KeyError: raise invirt_exception(
-                    '%s: key "%s" not found' % (progress, component))
-            except IndexError: raise invirt_exception(
-                    '%s: index %s out of range' % (progress, component))
-
-        if opts.ls:
-            if type(conf) not in (dict, list):
-                raise invirt_exception(
-                        '%s: node has no children (atomic datum)'
-                        % '.'.join(components))
-            if type(conf) == list:
-                for i in xrange(len(conf)):
-                    print i
-            else:
-                for k in conf.iterkeys():
-                    print k
+            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:
-            if type(conf) not in (dict, list):
-                print conf
-            else:
-                import yaml
-                yaml.dump(conf, stdout,
-                          Dumper=yaml.CSafeDumper, default_flow_style=False)
-    except invirt_exception, ex:
-        print >> stderr, ex
-        return 1
+            raise PathResolutionException(f'{".".join(components)}: node has no children (atomic datum)')
+    else:
+        if isinstance(conf, (dict, list)):
+            print(conf)
+        else:
+            yaml.dump(conf, sys.stdout, Dumper=yaml.CSafeDumper, default_flow_style=False)
+
 
 if __name__ == '__main__':
-    exit(main(argv))
+    main()