00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 import os
00034 import urlparse
00035 import urllib2
00036 import yaml
00037 import subprocess
00038 import sys
00039
00040 def conditional_abspath(uri):
00041 """
00042 @param uri: The uri to check
00043 @return: abspath(uri) if local path otherwise pass through uri
00044 """
00045 u = urlparse.urlparse(uri)
00046 if u.scheme == '':
00047 return os.path.abspath(uri)
00048 else:
00049 return uri
00050
00051 def is_path_stack(path):
00052 """
00053
00054 @return: True if the path provided is the root of a stack.
00055 """
00056 stack_path = os.path.join(path,'stack.xml')
00057 if os.path.isfile(stack_path):
00058 return True
00059 return False
00060
00061 def is_path_ros(path):
00062 """
00063 warning: exits with code 1 if stack document is invalid
00064 @param path: path of directory to check
00065 @type path: str
00066 @return: True if path points to the ROS stack
00067 @rtype: bool
00068 """
00069 stack_path = os.path.join(path,'stack.xml')
00070 if os.path.isfile(stack_path):
00071 return 'ros' == os.path.basename(path)
00072 return False
00073
00074
00075 def get_yaml_from_uri(uri):
00076
00077
00078 u = urlparse.urlparse(uri)
00079 f = 0
00080 if u.scheme == '':
00081 try:
00082 f = open(uri, 'r')
00083 except IOError as e:
00084 sys.stderr.write("error opening file [%s]: %s\n" % (uri, e))
00085 return None
00086 else:
00087 try:
00088 f = urllib2.urlopen(uri)
00089 except IOError as e:
00090 sys.stderr.write("Unable to download URL [%s]: %s\n" % (uri, e))
00091 if not f:
00092 sys.stderr.write("couldn't load config uri %s\n" % uri)
00093 return None
00094 try:
00095 y = yaml.load(f);
00096 except yaml.YAMLError as e:
00097 sys.stderr.write("Invalid rosinstall yaml format in [%s]: %s\n" % (uri, e ))
00098 return None
00099 return y
00100