This repository has been archived by the owner on Oct 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 123
/
Copy patherrors.i
79 lines (60 loc) · 2.51 KB
/
errors.i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
%module errors
%include "../common.i"
%include <stl.i>
%include "../common.i"
%feature("autodoc", "3");
%import "kdb.i"
%pythoncode {
class ElektraError:
number = ""
description = ""
module = ""
file = ""
line = ""
mountpoint = ""
configfile = ""
reason = ""
class ElektraWarning(ElektraError):
pass
def get_value_or_empty_string (ks: kdb.KeySet, key_name: str) -> str:
if ks.__contains__ (key_name):
key: kdb.Key = ks[key_name]
if key.value is not None:
return key.value
return ""
def get_warnings(key: kdb.Key) -> [ElektraWarning]:
result = []
if key.hasMeta("meta:/warnings") is False:
return result
meta: kdb.KeySet = key.__meta__().dup()
warnings: kdb.KeySet = meta.cut("meta:/warnings")
if len(warnings) == 0:
return result
key: kdb.Key
for key in warnings:
if key.isDirectBelow("meta:/warnings"):
warning = ElektraWarning()
warning.number = get_value_or_empty_string(warnings, key.name + "/number")
warning.description = get_value_or_empty_string(warnings, key.name + "/description")
warning.module = get_value_or_empty_string(warnings, key.name + "/module")
warning.file = get_value_or_empty_string(warnings, key.name + "/file")
warning.line = get_value_or_empty_string(warnings, key.name + "/line")
warning.mountpoint = get_value_or_empty_string(warnings, key.name + "/mountpoint")
warning.configfile = get_value_or_empty_string(warnings, key.name + "/configfile")
warning.reason = get_value_or_empty_string(warnings, key.name + "/reason")
result.append(warning)
return result
def get_error(key: kdb.Key):
if key.hasMeta("meta:/error") is False:
return None
error = ElektraError()
error.number = get_value_or_empty_string(key.__meta__(), "meta:/error/number")
error.description = get_value_or_empty_string(key.__meta__(), "meta:/error/description")
error.module = get_value_or_empty_string(key.__meta__(), "meta:/error/module")
error.file = get_value_or_empty_string(key.__meta__(), "meta:/error/file")
error.line = get_value_or_empty_string(key.__meta__(), "meta:/error/line")
error.mountpoint = get_value_or_empty_string(key.__meta__(), "meta:/error/mountpoint")
error.configfile = get_value_or_empty_string(key.__meta__(), "meta:/error/configfile")
error.reason = get_value_or_empty_string(key.__meta__(), "meta:/error/reason")
return error
};