]> git.0d.be Git - empathy.git/commitdiff
add generate-plugins.py
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 18 Jul 2012 09:37:04 +0000 (11:37 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 24 Jul 2012 14:20:04 +0000 (16:20 +0200)
Handy script to generate all the boilerplates for each protocol we are
supporting.

https://bugzilla.gnome.org/show_bug.cgi?id=680448

ubuntu-online-accounts/cc-plugins/Makefile.am
ubuntu-online-accounts/cc-plugins/generate-plugins.py [new file with mode: 0755]
ubuntu-online-accounts/cc-plugins/providers/Makefile.am
ubuntu-online-accounts/cc-plugins/providers/jabber.provider
ubuntu-online-accounts/cc-plugins/services/Makefile.am
ubuntu-online-accounts/cc-plugins/services/jabber-im.service

index c90caf72ff51d2d6057d88d0ed97872d201f664e..2b6029807674e96f0a8ab0bd85e79c6d9d54cc11 100644 (file)
@@ -1,3 +1,5 @@
+# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
 SUBDIRS = providers services
 
 plugindir = $(ACCOUNTS_PROVIDER_PLUGIN_DIR)
diff --git a/ubuntu-online-accounts/cc-plugins/generate-plugins.py b/ubuntu-online-accounts/cc-plugins/generate-plugins.py
new file mode 100755 (executable)
index 0000000..9f03a28
--- /dev/null
@@ -0,0 +1,167 @@
+#!/usr/bin/env python
+
+# (name, CM, protocol, icon)
+ALL = [
+        ('Jabber', 'gabble', 'jabber', 'jabber'),
+      ]
+
+class Plugin:
+    def __init__(self, name, cm, protocol, icon):
+        self.name = name
+        self.cm = cm
+        self.protocol = protocol
+        self.icon = icon
+
+##### The plugin itself #####
+
+def generate_build_block(p):
+    la = 'lib%s_la' % p.protocol.replace('-', '_')
+
+    output = '''%s_SOURCES = \\
+       empathy-accounts-plugin.c \\
+       empathy-accounts-plugin.h \\
+       empathy-accounts-plugin-widget.c \\
+       empathy-accounts-plugin-widget.h
+%s_LDFLAGS = -module -avoid-version
+%s_LIBADD = \\
+       $(UOA_LIBS)                                     \\
+       $(top_builddir)/libempathy-gtk/libempathy-gtk.la
+''' % (la, la, la)
+
+    return output
+
+def generate_makefile_am(plugins):
+    '''Generate Makefile.am'''
+    libs = []
+    build_blocks = []
+
+    for p in plugins:
+        name = '       lib%s.la' % p.protocol
+        libs.append(name)
+
+        build_blocks.append(generate_build_block(p))
+
+    f = open('Makefile.am', 'w')
+
+    f.write(
+'''# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
+SUBDIRS = providers services
+
+plugindir = $(ACCOUNTS_PROVIDER_PLUGIN_DIR)
+
+INCLUDES =                                     \\
+       -I$(top_builddir)                       \\
+       -I$(top_srcdir)                         \\
+       -DLOCALEDIR=\\""$(datadir)/locale"\\"   \\
+       $(UOA_CFLAGS)                           \\
+       $(WARN_CFLAGS)                          \\
+       $(ERROR_CFLAGS)                         \\
+       $(DISABLE_DEPRECATED)                   \\
+       $(EMPATHY_CFLAGS)
+
+plugin_LTLIBRARIES = \\
+%s \\
+       $(NULL)
+
+%s''' % ('\\\n'.join(libs), '\n\n'.join(build_blocks)))
+
+##### Providers #####
+
+def generate_provider_file(p):
+    f = open('providers/%s.provider' % p.protocol, 'w')
+
+    f.write(
+'''<?xml version="1.0" encoding="UTF-8" ?>
+<!-- Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+     Do NOT edit manually -->
+<provider id="%s">
+  <name>%s</name>
+  <icon>%s</icon>
+</provider>
+''' % (p.protocol, p.name, p.icon))
+
+def generate_providers(plugins):
+    '''generate providers/*.provider files and providers/Makefile.am'''
+
+    providers = []
+    for p in plugins:
+        providers.append('     %s.provider' % p.protocol)
+
+        generate_provider_file(p)
+
+    # providers/Makefile.am
+    f = open('providers/Makefile.am', 'w')
+    f.write(
+'''# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
+providersdir = $(ACCOUNTS_PROVIDER_FILES_DIR)
+
+providers_DATA = \\
+%s \\
+       $(NULL)
+
+EXTRA_DIST = $(providers_DATA)
+''' % ('\\\n'.join(providers)))
+
+##### Services #####
+
+def generate_service_file(p):
+    f = open('services/%s-im.service' % p.protocol, 'w')
+
+    f.write(
+'''<?xml version="1.0" encoding="UTF-8" ?>
+<!-- Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+     Do NOT edit manually -->
+<service id="%s-im">
+  <type>IM</type>
+  <name>%s</name>
+  <icon>%s</icon>
+  <provider>%s</provider>
+
+  <!-- default settings (account settings have precedence over these) -->
+  <template>
+    <group name="telepathy">
+      <setting name="manager">%s</setting>
+      <setting name="protocol">%s</setting>
+    </group>
+  </template>
+
+</service>
+''' % (p.protocol, p.name, p.icon, p.protocol, p.cm, p.protocol))
+
+def generate_services(plugins):
+    '''generate services/*-im.service files and services/Makefile.am'''
+
+    services = []
+    for p in plugins:
+        services.append('      %s-im.service' % p.protocol)
+
+        generate_service_file(p)
+
+    # providers/Makefile.am
+    f = open('services/Makefile.am', 'w')
+    f.write(
+'''# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
+servicesdir = $(ACCOUNTS_SERVICE_FILES_DIR)
+
+services_DATA = \\
+%s \\
+       $(NULL)
+
+EXTRA_DIST = $(services_DATA)
+''' % ('\\\n'.join(services)))
+
+def generate_all():
+    plugins = []
+
+    for name, cm, protocol, icon in ALL:
+        plugins.append(Plugin(name, cm, protocol, icon))
+
+    generate_makefile_am(plugins)
+    generate_providers(plugins)
+    generate_services(plugins)
+
+if __name__ == '__main__':
+    generate_all()
index 72254202acab3e6a41fef9e043045843a458b9fc..3941ed608cce877b5af69e1a58467dad1e0d7dac 100644 (file)
@@ -1,3 +1,5 @@
+# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
 providersdir = $(ACCOUNTS_PROVIDER_FILES_DIR)
 
 providers_DATA = \
index fc07da4686c76dcc9f29817fc9486677c4e9284b..ff553d24593a68b64bad03210551a0bb76d68c22 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!-- Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+     Do NOT edit manually -->
 <provider id="jabber">
   <name>Jabber</name>
   <icon>jabber</icon>
index 71901cd6b6329b3332c1285d19a22825b289f590..2c0dfa3d53ab4289b25098c528c81e6ec8f5c801 100644 (file)
@@ -1,3 +1,5 @@
+# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+# Do NOT edit manually
 servicesdir = $(ACCOUNTS_SERVICE_FILES_DIR)
 
 services_DATA = \
index dd6ab55b2d6728278b17d8cdff4da650b7f54b3c..156fa6bda10b109b1fb719e862585b8a9ae19d9e 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!-- Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
+     Do NOT edit manually -->
 <service id="jabber-im">
   <type>IM</type>
   <name>Jabber</name>