]> git.0d.be Git - empathy.git/blobdiff - ubuntu-online-accounts/cc-plugins/generate-plugins.py
UOA: share a common configuration plugin
[empathy.git] / ubuntu-online-accounts / cc-plugins / generate-plugins.py
index a5acab4889efe27e775400d08263cb2a09cff3ea..2845d3632c7973a80abe1f238d3ee605612469e5 100755 (executable)
@@ -25,228 +25,6 @@ class Plugin:
         self.protocol = protocol
         self.icon = icon
 
-##### account-plugins/ #####
-
-def magic_replace(text, protocol):
-    p = protocol.replace('-', '_')
-
-    l = protocol.split('-')
-    l = map(str.title, l)
-    camel = ''.join(l)
-
-    text = text.replace('$lower', p)
-    text = text.replace('$UPPER', p.upper())
-    text = text.replace('$Camel', camel)
-
-    return text
-
-def generate_plugin_header(p):
-    # header
-    f = open('account-plugins/empathy-accounts-plugin-%s.h' % p.protocol, 'w')
-
-    tmp = '''/* # Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
- * Do NOT edit manually */
-
-/*
- * empathy-accounts-plugin-%s.h
- *
- * Copyright (C) 2012 Collabora Ltd. <http://www.collabora.co.uk/>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-
-#ifndef __EMPATHY_ACCOUNTS_PLUGIN_$UPPER_H__
-#define __EMPATHY_ACCOUNTS_PLUGIN_$UPPER_H__
-
-#include "empathy-accounts-plugin.h"
-
-G_BEGIN_DECLS
-
-typedef struct _EmpathyAccountsPlugin$Camel EmpathyAccountsPlugin$Camel;
-typedef struct _EmpathyAccountsPlugin$CamelClass EmpathyAccountsPlugin$CamelClass;
-
-struct _EmpathyAccountsPlugin$CamelClass
-{
-  /*<private>*/
-  EmpathyAccountsPluginClass parent_class;
-};
-
-struct _EmpathyAccountsPlugin$Camel
-{
-  /*<private>*/
-  EmpathyAccountsPlugin parent;
-};
-
-GType empathy_accounts_plugin_$lower_get_type (void);
-
-/* TYPE MACROS */
-#define EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER \\
-  (empathy_accounts_plugin_$lower_get_type ())
-#define EMPATHY_ACCOUNTS_PLUGIN_$UPPER(obj) \\
-  (G_TYPE_CHECK_INSTANCE_CAST((obj), \\
-    EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER, \\
-    EmpathyAccountsPlugin$Camel))
-#define EMPATHY_ACCOUNTS_PLUGIN_$UPPER_CLASS(klass) \\
-  (G_TYPE_CHECK_CLASS_CAST((klass), \\
-    EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER, \\
-    EmpathyAccountsPlugin$CamelClass))
-#define EMPATHY_IS_ACCOUNTS_PLUGIN_$UPPER(obj) \\
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj), \\
-    EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER))
-#define EMPATHY_IS_ACCOUNTS_PLUGIN_$UPPER_CLASS(klass) \\
-  (G_TYPE_CHECK_CLASS_TYPE((klass), \\
-    EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER))
-#define EMPATHY_ACCOUNTS_PLUGIN_$UPPER_GET_CLASS(obj) \\
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), \\
-    EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER, \\
-    EmpathyAccountsPlugin$CamelClass))
-
-GType ap_module_get_object_type (void);
-
-G_END_DECLS
-
-#endif /* #ifndef __EMPATHY_ACCOUNTS_PLUGIN_$UPPER_H__*/''' % (p.protocol)
-
-    f.write(magic_replace (tmp, p.protocol))
-
-def generate_plugin_code(p):
-    # header
-    f = open('account-plugins/empathy-accounts-plugin-%s.c' % p.protocol, 'w')
-
-    tmp = '''/* # Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
- * Do NOT edit manually */
-
-/*
- * empathy-accounts-plugin-%s.c
- *
- * Copyright (C) 2012 Collabora Ltd. <http://www.collabora.co.uk/>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "config.h"
-
-#include "empathy-accounts-plugin-%s.h"
-
-G_DEFINE_TYPE (EmpathyAccountsPlugin$Camel, empathy_accounts_plugin_$lower,\\
-        EMPATHY_TYPE_ACCOUNTS_PLUGIN)
-
-static void
-empathy_accounts_plugin_$lower_class_init (
-    EmpathyAccountsPlugin$CamelClass *klass)
-{
-}
-
-static void
-empathy_accounts_plugin_$lower_init (EmpathyAccountsPlugin$Camel *self)
-{
-}
-
-GType
-ap_module_get_object_type (void)
-{
-  return EMPATHY_TYPE_ACCOUNTS_PLUGIN_$UPPER;
-}''' % (p.protocol, p.protocol)
-
-    f.write(magic_replace (tmp, p.protocol))
-
-def generate_build_block(p):
-    la = 'lib%s_la' % p.protocol.replace('-', '_')
-
-    output = '''%s_SOURCES = \\
-       empathy-accounts-plugin-%s.c \\
-       empathy-accounts-plugin-%s.h
-%s_LDFLAGS = -module -avoid-version
-%s_LIBADD = \\
-       libempathy-uoa-account-plugin.la \\
-       $(top_builddir)/libempathy/libempathy.la \\
-       $(top_builddir)/libempathy-gtk/libempathy-gtk.la
-''' % (la, p.protocol, p.protocol, la, la)
-
-    return output
-
-
-def generate_account_plugins(plugins):
-    '''account-plugins/'''
-    libs = []
-    build_blocks = []
-
-    for p in plugins:
-        # empathy-accounts-plugin-$protocol.[ch]'''
-        generate_plugin_header(p)
-        generate_plugin_code(p)
-
-        name = '       lib%s.la' % p.protocol
-        libs.append(name)
-
-        build_blocks.append(generate_build_block(p))
-
-    # Makefile.am
-    f = open('account-plugins/Makefile.am', 'w')
-
-    f.write(
-'''# Generated using empathy/ubuntu-online-accounts/cc-plugins/generate-plugins.py
-# Do NOT edit manually
-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)
-
-pkglib_LTLIBRARIES = libempathy-uoa-account-plugin.la
-
-# this API is not stable and will never be, so use -release to make the
-# SONAME of the plugin library change with every Empathy release.
-libempathy_uoa_account_plugin_la_LDFLAGS = \\
-   -no-undefined \\
-   -release $(VERSION)
-
-libempathy_uoa_account_plugin_la_SOURCES = \\
-       empathy-accounts-plugin.c \\
-       empathy-accounts-plugin.h \\
-       empathy-accounts-plugin-widget.c \\
-       empathy-accounts-plugin-widget.h
-
-libempathy_uoa_account_plugin_la_LIBADD = \\
-       $(UOA_LIBS)
-
-plugin_LTLIBRARIES = \\
-%s \\
-       $(NULL)
-
-%s''' % ('\\\n'.join(libs), '\n\n'.join(build_blocks)))
-
 ##### providers/ #####
 
 def generate_provider_file(p):
@@ -259,6 +37,7 @@ def generate_provider_file(p):
 <provider id="%s">
   <name>%s</name>
   <icon>%s</icon>
+  <plugin>empathy-accounts-plugin</plugin>
 </provider>
 ''' % (p.protocol, p.name, p.icon))
 
@@ -344,7 +123,6 @@ def generate_all():
     for name, cm, protocol, icon in ALL:
         plugins.append(Plugin(name, cm, protocol, icon))
 
-    generate_account_plugins(plugins)
     generate_providers(plugins)
     generate_services(plugins)