generate_initpy.py
Go to the documentation of this file.
00001 # Software License Agreement (BSD License)
00002 #
00003 # Copyright (c) 2008, Willow Garage, Inc.
00004 # All rights reserved.
00005 #
00006 # Redistribution and use in source and binary forms, with or without
00007 # modification, are permitted provided that the following conditions
00008 # are met:
00009 #
00010 #  * Redistributions of source code must retain the above copyright
00011 #    notice, this list of conditions and the following disclaimer.
00012 #  * Redistributions in binary form must reproduce the above
00013 #    copyright notice, this list of conditions and the following
00014 #    disclaimer in the documentation and/or other materials provided
00015 #    with the distribution.
00016 #  * Neither the name of Willow Garage, Inc. nor the names of its
00017 #    contributors may be used to endorse or promote products derived
00018 #    from this software without specific prior written permission.
00019 #
00020 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00021 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00024 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00028 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00029 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00030 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00031 # POSSIBILITY OF SUCH DAMAGE.
00032 
00033 from __future__ import print_function
00034 
00035 import os
00036 
00037 from genmsg import MsgGenerationException
00038 
00039 ## :param type_name str: Name of message type sans package,
00040 ## e.g. 'String'
00041 ## :returns str: name of python module for auto-generated code
00042 def _module_name(type_name):
00043     return "_"+type_name
00044     
00045 def write_modules(outdir):
00046     if not os.path.isdir(outdir):
00047         #TODO: warn?
00048         return 0
00049     types_in_dir = set([f[1:-3] for f in os.listdir(outdir)
00050                      if f.endswith('.py') and f != '__init__.py'])
00051     generated_modules = [_module_name(f) for f in types_in_dir]
00052     write_module(outdir, generated_modules)
00053     return 0
00054 
00055 def write_module(basedir, generated_modules):
00056     """
00057     Create a module file to mark directory for python
00058 
00059     :param base_dir: path to package, ``str``
00060     :param package: name of package to write module for, ``str``
00061     :param generated_modules: list of generated message modules,
00062       i.e. the names of the .py files that were generated for each
00063       .msg file. ``[str]``
00064     """
00065     if not os.path.exists(basedir):
00066         os.makedirs(basedir)
00067     elif not os.path.isdir(basedir):
00068         raise MsgGenerationException("file preventing the creating of module directory: %s"%dir)
00069     p = os.path.join(basedir, '__init__.py')
00070     with open(p, 'w') as f:
00071         for mod in generated_modules:
00072             f.write('from .%s import *\n'%mod)
00073 
00074     parent_init = os.path.dirname(basedir)
00075 #    p = os.path.join(parent_init, '__init__.py')
00076 #    if not os.path.exists(p):
00077 #        #touch __init__.py in the parent package
00078 #        with open(p, 'w') as f:
00079 #            print("import pkgutil, os.path", file=f)
00080 #            print("__path__ = pkgutil.extend_path(__path__, __name__)", file=f)
00081 #            if srcdir is not None:
00082 #                staticinit = '%s/%s/__init__.py' % (srcdir, package)
00083 #                print("if os.path.isfile('%s'): execfile('%s')" % (staticinit, staticinit), file=f)


firos
Author(s): IƱigo Gonzalez, igonzalez@ikergune.com
autogenerated on Thu Jun 6 2019 17:51:04