Package node_manager_fkie :: Module common
[frames] | no frames]

Source Code for Module node_manager_fkie.common

  1  import os 
  2   
  3  MANIFEST_FILE = 'manifest.xml' 
  4  PACKAGE_FILE = 'package.xml' 
  5   
  6  try: 
  7    from catkin_pkg.package import parse_package 
  8    CATKIN_SUPPORTED = True 
  9  except ImportError: 
 10    CATKIN_SUPPORTED = False 
 11   
 12  PACKAGE_CACHE = {} 
 13   
14 -def get_ros_home():
15 ''' 16 Returns the ROS HOME depending on ROS distribution API. 17 @return: ROS HOME path 18 @rtype: C{str} 19 ''' 20 try: 21 import rospkg.distro 22 distro = rospkg.distro.current_distro_codename() 23 if distro in ['electric', 'diamondback', 'cturtle']: 24 import roslib.rosenv 25 return roslib.rosenv.get_ros_home() 26 else: 27 import rospkg 28 return rospkg.get_ros_home() 29 except: 30 # import traceback 31 # print traceback.format_exc() 32 import roslib.rosenv 33 return roslib.rosenv.get_ros_home()
34 35
36 -def masteruri_from_ros():
37 ''' 38 Returns the master URI depending on ROS distribution API. 39 @return: ROS master URI 40 @rtype: C{str} 41 ''' 42 try: 43 import rospkg.distro 44 distro = rospkg.distro.current_distro_codename() 45 if distro in ['electric', 'diamondback', 'cturtle']: 46 import roslib.rosenv 47 return roslib.rosenv.get_master_uri() 48 else: 49 import rosgraph 50 return rosgraph.rosenv.get_master_uri() 51 except: 52 return os.environ['ROS_MASTER_URI']
53
54 -def get_packages(path):
55 result = {} 56 if os.path.isdir(path): 57 fileList = os.listdir(path) 58 if MANIFEST_FILE in fileList: 59 return {os.path.basename(path) : path} 60 if CATKIN_SUPPORTED and PACKAGE_FILE in fileList: 61 try: 62 pkg = parse_package(path) 63 return {pkg.name : path} 64 except: 65 pass 66 return {} 67 for f in fileList: 68 ret = get_packages(os.path.join(path, f)) 69 result = dict(ret.items() + result.items()) 70 return result
71
72 -def package_name(dir):
73 ''' 74 Returns for given directory a tuple of package name and package path or None values. 75 The results are cached! 76 @rtype: C{(name, path)} 77 ''' 78 if not (dir is None) and dir and dir != os.path.sep and os.path.isdir(dir): 79 if PACKAGE_CACHE.has_key(dir): 80 return PACKAGE_CACHE[dir] 81 package = os.path.basename(dir) 82 fileList = os.listdir(dir) 83 for file in fileList: 84 if file == MANIFEST_FILE: 85 PACKAGE_CACHE[dir] = (package, dir) 86 return (package, dir) 87 if CATKIN_SUPPORTED and file == PACKAGE_FILE: 88 try: 89 pkg = parse_package(os.path.join(dir, file)) 90 PACKAGE_CACHE[dir] = (pkg.name, dir) 91 return (pkg.name, dir) 92 except: 93 return (None,None) 94 PACKAGE_CACHE[dir] = package_name(os.path.dirname(dir)) 95 return PACKAGE_CACHE[dir] 96 return (None, None)
97
98 -def is_package(file_list):
99 return (MANIFEST_FILE in file_list or (CATKIN_SUPPORTED and PACKAGE_FILE in file_list))
100