libpurple/dbus-analyze-signals.py

Wed, 28 Sep 2016 09:32:19 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 28 Sep 2016 09:32:19 -0500
changeset 38066
2e94b6fa06a0
parent 37984
6a5ca046a90d
child 38358
30ba44276e74
permissions
-rw-r--r--

Merged in CMaiku/pidgin (pull request #136)

Windows build fixes

27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
1 # This program takes a C source as the input and produces the list of
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
2 # all signals registered.
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
3 #
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
4 # Output is:
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
5 # <signal name="Changed">
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
6 # <arg name="new_value" type="b"/>
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
7 # </signal>
37983
7d134a4a87b2 Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37936
diff changeset
8 from __future__ import absolute_import, division, print_function
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
9
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
10 import argparse
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
11 import fileinput
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
12 import re
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
13 import sys
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
14
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
15
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
16 # List "excluded" contains signals that shouldn't be exported via
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
17 # DBus. If you remove a signal from this list, please make sure
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
18 # that it does not break "make" with the configure option
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
19 # "--enable-dbus" turned on.
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
20
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
21 excluded = [
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22 # purple_dbus_signal_emit_purple prevents our "dbus-method-called"
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23 # signal from being propagated to dbus.
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
24 "dbus-method-called",
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
25 ]
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
26
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
27 registerregex = re.compile(
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
28 "purple_signal_register[^;]+\"([\w\-]+)\"[^;]+(purple_marshal_\w+)[^;]+;")
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
29 nameregex = re.compile('[-_][a-z]')
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
30
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
31 parser = argparse.ArgumentParser()
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
32 parser.add_argument('input', nargs='*',
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
33 help='Input files (or stdin if not specified)')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
34 parser.add_argument('-o', '--output', type=argparse.FileType('w'),
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
35 help='Output to file instead of stdout')
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
36 cmd_args = parser.parse_args()
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
37
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
38 print("/* Generated by %s. Do not edit! */" % (sys.argv[0], ),
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
39 file=cmd_args.output)
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
40 print("const char *dbus_signals = ", file=cmd_args.output)
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
41 input = ''.join(list(fileinput.input(cmd_args.input)))
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
42 for match in registerregex.finditer(input):
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
43 signal = match.group(1)
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
44 marshal = match.group(2)
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
45 if signal in excluded:
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
46 continue
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
47
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
48 signal = nameregex.sub(lambda x: x.group()[1].upper(), '-' + signal)
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
49 print("\" <signal name='%s'>\\n\"" % (signal, ), file=cmd_args.output)
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
50
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
51 args = marshal.split('_')
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
52 # ['purple', 'marshal', <return type>, '', args...]
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
53 if len(args) > 4:
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
54 for arg in args[4:]:
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
55 if arg == "POINTER":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
56 type = 'p'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
57 elif arg == "ENUM":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
58 type = 'i'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
59 elif arg == "INT":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
60 type = 'i'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
61 elif arg == "UINT":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
62 type = 'u'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
63 elif arg == "INT64":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
64 type = 'x'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
65 elif arg == "UINT64":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
66 type = 't'
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
67 elif arg == "BOOLEAN":
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
68 type = 'b'
37984
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
69 print("\" <arg type='%s'/>\\n\"" % (type, ),
6a5ca046a90d Make all Python files PEP8 compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37983
diff changeset
70 file=cmd_args.output)
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
71
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
72 print("\" </signal>\\n\"", file=cmd_args.output)
27568
437768598637 Add auto-generated D-Bus signals introspection, though parameter names
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
73
37936
65e477a02dd6 Refactor DBus Python scripts to avoid redirection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33932
diff changeset
74 print(";", file=cmd_args.output)

mercurial