sdbus++: parse error info yaml
Change-Id: I73361b6f9b48b32a206d1e6d3e52ff46195b3cbc
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/tools/example/net/poettering/Calculator.errors.yaml b/tools/example/net/poettering/Calculator.errors.yaml
new file mode 100644
index 0000000..730e2a3
--- /dev/null
+++ b/tools/example/net/poettering/Calculator.errors.yaml
@@ -0,0 +1,3 @@
+- name: DivisionByZero
+ description: >
+ An attempt to divide by zero was attempted.
diff --git a/tools/sdbus++ b/tools/sdbus++
index 2e4e330..db96b1f 100755
--- a/tools/sdbus++
+++ b/tools/sdbus++
@@ -9,10 +9,12 @@
def main():
module_path = os.path.dirname(sdbusplus.__file__)
- valid_types = {'interface': sdbusplus.Interface}
+ valid_types = {'interface': sdbusplus.Interface,
+ 'error': sdbusplus.Error}
valid_processes = {'markdown': "markdown",
'server-header': "server_header",
- 'server-cpp': "server_cpp"}
+ 'server-cpp': "server_cpp",
+ 'exception-header': "exception_header"}
parser = argparse.ArgumentParser(description='Process sdbus++ YAML files.')
diff --git a/tools/sdbusplus/__init__.py b/tools/sdbusplus/__init__.py
index 2ab249b..4703f22 100644
--- a/tools/sdbusplus/__init__.py
+++ b/tools/sdbusplus/__init__.py
@@ -1 +1,2 @@
from sdbusplus.interface import Interface
+from sdbusplus.error import Error
diff --git a/tools/sdbusplus/error.py b/tools/sdbusplus/error.py
new file mode 100644
index 0000000..ff3926c
--- /dev/null
+++ b/tools/sdbusplus/error.py
@@ -0,0 +1,27 @@
+import os
+import yaml
+from .namedelement import NamedElement
+from .renderer import Renderer
+
+
+class Error(NamedElement, Renderer):
+ @staticmethod
+ def load(name, rootdir='.'):
+ filename = os.path.join(rootdir,
+ name.replace('.', '/') + ".errors.yaml")
+
+ with open(filename) as f:
+ data = f.read()
+ y = yaml.safe_load(data)
+ y = {'name': name,
+ 'errors': y}
+ return Error(**y)
+
+ def __init__(self, **kwargs):
+ self.errors = \
+ [NamedElement(**n) for n in kwargs.pop('errors', [])]
+
+ super(Error, self).__init__(**kwargs)
+
+ def exception_header(self, loader):
+ return ""