[empathy] add generate-plugins.py



commit e296ad8a3b6dd5049caa9ea6b739a34d9d16dea6
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Wed Jul 18 11:37:04 2012 +0200

    add generate-plugins.py
    
    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      |    2 +
 .../cc-plugins/generate-plugins.py                 |  167 ++++++++++++++++++++
 .../cc-plugins/providers/Makefile.am               |    2 +
 .../cc-plugins/providers/jabber.provider           |    2 +
 .../cc-plugins/services/Makefile.am                |    2 +
 .../cc-plugins/services/jabber-im.service          |    2 +
 6 files changed, 177 insertions(+), 0 deletions(-)
---
diff --git a/ubuntu-online-accounts/cc-plugins/Makefile.am b/ubuntu-online-accounts/cc-plugins/Makefile.am
index c90caf7..2b60298 100644
--- a/ubuntu-online-accounts/cc-plugins/Makefile.am
+++ b/ubuntu-online-accounts/cc-plugins/Makefile.am
@@ -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
index 0000000..9f03a28
--- /dev/null
+++ b/ubuntu-online-accounts/cc-plugins/generate-plugins.py
@@ -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()
diff --git a/ubuntu-online-accounts/cc-plugins/providers/Makefile.am b/ubuntu-online-accounts/cc-plugins/providers/Makefile.am
index 7225420..3941ed6 100644
--- a/ubuntu-online-accounts/cc-plugins/providers/Makefile.am
+++ b/ubuntu-online-accounts/cc-plugins/providers/Makefile.am
@@ -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 = \
diff --git a/ubuntu-online-accounts/cc-plugins/providers/jabber.provider b/ubuntu-online-accounts/cc-plugins/providers/jabber.provider
index fc07da4..ff553d2 100644
--- a/ubuntu-online-accounts/cc-plugins/providers/jabber.provider
+++ b/ubuntu-online-accounts/cc-plugins/providers/jabber.provider
@@ -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>
diff --git a/ubuntu-online-accounts/cc-plugins/services/Makefile.am b/ubuntu-online-accounts/cc-plugins/services/Makefile.am
index 71901cd..2c0dfa3 100644
--- a/ubuntu-online-accounts/cc-plugins/services/Makefile.am
+++ b/ubuntu-online-accounts/cc-plugins/services/Makefile.am
@@ -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 = \
diff --git a/ubuntu-online-accounts/cc-plugins/services/jabber-im.service b/ubuntu-online-accounts/cc-plugins/services/jabber-im.service
index dd6ab55..156fa6b 100644
--- a/ubuntu-online-accounts/cc-plugins/services/jabber-im.service
+++ b/ubuntu-online-accounts/cc-plugins/services/jabber-im.service
@@ -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>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]