#!/usr/bin/env python # -*- Mode: Python; py-indent-offset: 4 -*- import sys, os, getopt module_init_template = \ '/* -*- Mode: C; c-basic-offset: 4 -*- */\n' + \ '#ifdef HAVE_CONFIG_H\n' + \ '# include "config.h"\n' + \ '#endif\n' + \ '#include \n' + \ '#include \n' + \ '\n' + \ '/* include any extra headers needed here */\n' + \ '\n' + \ 'void %(prefix)s_register_classes(PyObject *d);\n' + \ 'extern PyMethodDef %(prefix)s_functions[];\n' + \ '\n' + \ 'DL_EXPORT(void)\n' + \ 'init%(module)s(void)\n' + \ '{\n' + \ ' PyObject *m, *d;\n' + \ '\n' + \ ' /* perform any initialisation required by the library here */\n' + \ '\n' + \ ' m = Py_InitModule("%(module)s", %(prefix)s_functions);\n' + \ ' d = PyModule_GetDict(m);\n' + \ '\n' + \ ' init_pygtk();\n' + \ '\n' + \ ' %(prefix)s_register_classes(d);\n' + \ '\n' + \ ' /* add anything else to the module dictionary (such as constants) */\n' +\ '\n' + \ ' if (PyErr_Occurred())\n' + \ ' Py_FatalError("could not initialise module %(module)s");\n' + \ '}\n' override_template = \ '/* -*- Mode: C; c-basic-offset: 4 -*- */\n' + \ '%%%%\n' + \ 'headers\n' + \ '/* include any required headers here */\n' + \ '%%%%\n' + \ 'init\n' + \ ' /* include any code here that needs to be executed before the\n' + \ ' * extension classes get initialised */\n' + \ '%%%%\n' + \ '\n' + \ '/* you should add appropriate ignore, ignore-glob and\n' + \ ' * override sections here */\n' def open_with_backup(file): if os.path.exists(file): try: os.rename(file, file+'~') except OSError: # fail silently if we can't make a backup pass return open(file, 'w') def write_skels(fileprefix, prefix, module): fp = open_with_backup(fileprefix+'module.c') fp.write(module_init_template % { 'prefix': prefix, 'module': module }) fp.close() fp = open_with_backup(fileprefix+'.override') fp.write(override_template % { 'prefix': prefix, 'module': module }) fp.close() if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], 'f:p:m:h', ['file-prefix=', 'prefix=', 'module=', 'help']) fileprefix = None prefix = None module = None for opt, arg in opts: if opt in ('-f', '--file-prefix'): fileprefix = arg elif opt in ('-p', '--prefix'): prefix = arg elif opt in ('-m', '--module'): module = arg elif opt in ('-h', '--help'): print 'usage: mkskel.py -f fileprefix -p prefix -m module' sys.exit(0) if not fileprefix or not prefix or not module: print 'usage: mkskel.py -f fileprefix -p prefix -m module' sys.exit(1) write_skels(fileprefix, prefix, module)