def test_on_ros_path(): from rospkg import on_ros_path, get_ros_root, get_ros_package_path from rospkg.environment import _resolve_paths assert not on_ros_path(tempfile.gettempdir()) if get_ros_root() is not None: assert on_ros_path(get_ros_root()) paths = _resolve_paths(get_ros_package_path()).split(os.pathsep) for p in paths: assert on_ros_path(p), "failed: %s, [%s]"%(p, paths)
def test_on_ros_path(): from rospkg import on_ros_path, get_ros_root, get_ros_package_path from rospkg.environment import _resolve_paths assert not on_ros_path(tempfile.gettempdir()) if get_ros_root() is not None: assert on_ros_path(get_ros_root()) if get_ros_package_path() is not None: paths = _resolve_paths(get_ros_package_path()).split(os.pathsep) for p in paths: assert on_ros_path(p), "failed: %s, [%s]" % (p, paths)
def roscreatepkg_main(): from optparse import OptionParser parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]", prog=NAME) options, args = parser.parse_args() if not args: parser.error("you must specify a package name and optionally also list package dependencies") package = args[0] if not roslib.names.is_legal_resource_base_name(package): parser.error("illegal package name: %s\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package) # validate dependencies and turn into XML depends = args[1:] uses_roscpp = 'roscpp' in depends uses_rospy = 'rospy' in depends rospack = RosPack() for d in depends: try: rospack.get_path(d) except ResourceNotFound: print("ERROR: dependency [%s] cannot be found"%d, file=sys.stderr) sys.exit(1) depends = u''.join([u' <depend package="%s"/>\n'%d for d in depends]) if not on_ros_path(os.getcwd()): print('!'*80+"\nWARNING: current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n"+'!'*80, file=sys.stderr) if type(package) == str: package = package.decode('utf-8') create_package(package, author_name(), depends, uses_roscpp=uses_roscpp, uses_rospy=uses_rospy)
def parse_arguments(extra_depends=[], is_catkin=True): """ Parse the command line arguments - in format <package-name> [dependencies]". This will need to upgrade from optparse to argparse post python 2.7 """ parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]") options, args = parser.parse_args() if not args: parser.error("You must specify a package name and optionally also list package dependencies") package = args[0] if type(package) == str: package = package.decode('utf-8') depends = args[1:] + extra_depends if not is_legal_resource_base_name(package): parser.error("illegal package name [%s]\n\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package) if os.path.exists(os.path.abspath(package)): parser.error("%s already exists, aborting"%package) print "Is_catkin? %r" % is_catkin if is_catkin == True: # not able to handle dependency checking print("WARNING: no ros environment found, skipping package and dependency checks\n") else: # legacy rosbuild, try and handle dependencies if not rospkg.get_ros_paths(): print("WARNING: no ros environment found, skipping package and dependency checks\n") else: rospack = rospkg.RosPack() if package_already_exists(package, rospack): parser.error("package already exists on the ROS_PACKAGE_PATH!") if not rospkg.on_ros_path(package): parser.error("current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n") if not dependencies_exist(depends, rospack): parser.error("dependency [%s] cannot be found"%d) return (package,depends)
def roscreatestack_main(): from optparse import OptionParser parser = OptionParser(usage="usage: %prog <path-to-stack>", prog=NAME) parser.add_option("--show-deps", dest="show_deps", default=False, action="store_true", help="show stack dependencies, instead of generating stack.xml") options, args = parser.parse_args() if not args: parser.error("you must specify the path to a stack") stack_dir = args[0] stack = os.path.basename(os.path.abspath(stack_dir)) if not on_ros_path(stack_dir): print("ERROR: roscreate-stack only work in directories in ROS_PACKAGE_PATH\nPlease update your ROS_PACKAGE_PATH environment variable.", file=sys.stderr) sys.exit(1) try: depends, licenses = compute_stack_depends_and_licenses(stack_dir) except rospkg.ResourceNotFound as e: print("Cannot find resource: %s"%str(e), file=sys.stderr) sys.exit(1) # defaults stack_manifest = None author = "Maintained by %s"%author_name() if not options.show_deps: # Check for existing stack.xml stack_xml_path = os.path.join(stack_dir, 'stack.xml') if os.path.exists(stack_xml_path): import shutil stack_xml_path_bak = os.path.join(stack_dir, 'stack.xml.bak') print('Backing up existing stack.xml to %s'%(stack_xml_path_bak)) shutil.copyfile(stack_xml_path, stack_xml_path_bak) try: # load existing stack.xml properties (soft fail if there are issues with existing file) stack_manifest = rospkg.manifest.parse_manifest_file(stack_dir, rospkg.STACK_FILE) author = stack_manifest.author except: pass create_stack(stack, stack_dir, stack_manifest, author, depends, licenses, options.show_deps)
def roscreatepkg_main(): from optparse import OptionParser parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]", prog=NAME) options, args = parser.parse_args() if not args: parser.error("you must specify a package name and optionally also list package dependencies") package = args[0] ###### BRSU EXTENSION ############################################################### if (not package.startswith('raw_')) and (not package.startswith('brsu_')) and (not package.startswith('hbrs_')): parser.error("illegal package name: %s\n\nPackage name must start either with 'raw_', 'brsu_' or 'hbrs_'"%package) if not roslib.names.is_legal_resource_base_name(package): parser.error("illegal package name: %s\n\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package) # validate dependencies and turn into XML depends = args[1:] uses_roscpp = 'roscpp' in depends uses_rospy = 'rospy' in depends ###### BRSU EXTENSION ############################################################### depends.append("roscpp") depends.append("sensor_msgs") depends.append("std_srvs") for d in depends: try: roslib.packages.get_pkg_dir(d) except roslib.packages.InvalidROSPkgException: print >> sys.stderr, "ERROR: dependency [%s] cannot be found"%d sys.exit(1) depends = u''.join([u' <depend package="%s"/>\n'%d for d in depends]) if not on_ros_path(os.getcwd()): print >> sys.stderr, '!'*80+"\nWARNING: current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n"+'!'*80 if type(package) == str: package = package.decode('utf-8') create_package(package, author_name(), depends, uses_roscpp=uses_roscpp, uses_rospy=uses_rospy)
try: import rospkg import os if rospkg.on_ros_path(os.path.dirname(__file__)): import roslib roslib.load_manifest('object_recognition_core') except ImportError: pass except Exception as e: pass
try: import rospkg import os if rospkg.on_ros_path(os.path.dirname(__file__)): import roslib; roslib.load_manifest('object_recognition_core') except ImportError: pass except Exception as e : pass