def create_catkin_package_files(package_name, package_path, args):
    '''
      This is almost a direct copy from catkin_create_pkg.
    '''
    try:
        build_depends = []
        if 'rosjava_build_tools' not in args.dependencies:
            build_depends.append(catkin_pkg.package.Dependency('rosjava_build_tools'))
        for depend_name in args.dependencies:
            build_depends.append(catkin_pkg.package.Dependency(depend_name))
        package_template = PackageTemplate._create_package_template(
            package_name=package_name,
            description=args.description,
            licenses=args.license or [],
            maintainer_names=args.maintainer,
            author_names=args.author,
            version=args.pkg_version,
            catkin_deps=[],
            system_deps=[],
            boost_comps=None)
        package_template.exports = []
        package_template.build_depends = build_depends
        distro_version = utils.distro_version()
        package_xml = create_package_xml(package_template=package_template, rosdistro=distro_version)
        try:
            filename = os.path.join(package_path, 'package.xml')
            f = open(filename, 'w')
            f.write(package_xml)
            console.pretty_print('Created repo file: ', console.cyan)
            console.pretty_println('%s' % filename, console.yellow)
        finally:
            f.close()
    except Exception:
        raise
def create_gradle_package_files(args, author, is_library, sdk_version):
    '''
      This is almost a direct copy from catkin_create_pkg.
    '''
    plugin_name = "com.android.library" if is_library else "com.android.application"
    try:
        package_name = args.name[0].lower()
        package_path = os.path.abspath(os.path.join(os.getcwd(), package_name))
        console.pretty_println("\nCreating gradle files", console.bold)
        for template_name in ['build.gradle']:  # 'CMakeLists.txt']:
            filename = os.path.join(package_path, template_name)
            template = read_template_file(template_name)
            contents = instantiate_template(template, package_name, author,
                                            plugin_name, sdk_version)
            #if is_library:
            #    contents += extra_gradle_library_text()
            try:
                f = open(filename, 'w')
                f.write(contents)
                console.pretty_print('  File: ', console.cyan)
                console.pretty_println(template_name, console.yellow)
            finally:
                f.close()
    except Exception:
        raise
Esempio n. 3
0
def create_rosjava_project_common(args, template_directory):
    project_name = args.name[0]
    console.pretty_println("\nCreating rosjava project ", console.bold)
    console.pretty_print("  Name      : ", console.cyan)
    console.pretty_println("%s" % project_name, console.yellow)
    utils.mkdir_p(os.path.join(os.getcwd(), project_name.lower()))
    # This is in the old form, let's shovel the shit around to the new form
    create_gradle_package_files(args, template_directory)
    add_to_root_gradle_settings(args.name[0])
def create_gradle_wrapper(repo_path):
    gradle_binary = os.path.join(os.path.dirname(__file__),'..', '..', '..', 'share', 'rosjava_build_tools', 'gradle', 'gradlew')
    cmd = [gradle_binary, '-p', repo_path, 'wrapper']
    console.pretty_print("Creating gradle wrapper: ", console.cyan)
    console.pretty_println("%s" % ' '.join(cmd), console.yellow)
    try:
        subprocess.check_call(cmd)
    except subprocess.CalledProcessError:
        raise subprocess.CalledProcessError("failed to create the gradle wrapper.")
Esempio n. 5
0
def populate_repo(repo_path, package_type):
    author = utils.author_name()
    repo_name = os.path.basename(repo_path)
    templates = get_templates(package_type)
    for filename, template in templates.items():
        contents = instantiate_template(template, repo_name, author)
        try:
            p = os.path.abspath(os.path.join(repo_path, filename))
            f = open(p, 'w')
            f.write(contents)
            console.pretty_print("Created repo file: ", console.cyan)
            console.pretty_println("%s" % p, console.yellow)
        finally:
            f.close()
Esempio n. 6
0
def create_dummy_java_class(project_name):
    path = os.path.join(os.getcwd(), project_name.lower())
    package_name = os.path.basename(os.getcwd())
    java_package_path = os.path.join(path, 'src', 'main', 'java', 'com',
                                     'github', package_name, project_name)
    utils.mkdir_p(java_package_path)
    filename = os.path.join(java_package_path, 'Dude.java')
    java_class = "package com.github.%s.%s;\n" % (package_name, project_name)
    java_class += "\n"
    java_class += "public class Dude {\n"
    java_class += "}\n"
    console.pretty_print('  File      : ', console.cyan)
    console.pretty_println('Dude.class', console.yellow)
    with open(filename, 'w') as dude_class:
        dude_class.write(java_class)
Esempio n. 7
0
def ros_package_name():
    for rel_path in ['.', '..']:
        package_xml_path = os.path.join(os.getcwd(), rel_path, 'package.xml')
        if os.path.isfile(package_xml_path):
            break
        else:
            package_xml_path = None
    if package_xml_path is None:
        console.pretty_println(
            "\nCouldn't find the root level package.xml file - not adding to the superproject."
        )
        return
    tree = ElementTree.parse(package_xml_path)
    root = tree.getroot()
    name = root.find('name').text
    return name
Esempio n. 8
0
def add_to_root_gradle_settings(name):
    '''
      Adds project name to the root level settings.gradle file.
    '''
    for rel_path in ['.', '..']:
        settings_gradle_path = os.path.join(os.getcwd(), rel_path, 'settings.gradle')
        if os.path.isfile(settings_gradle_path):
            break
        else:
            settings_gradle_path = None
    if settings_gradle_path is None:
        console.pretty_println("\nCouldn't find the root level settings.gradle file - not adding to the superproject.")
        return
    with open(settings_gradle_path, 'a') as settings_gradle:
        console.pretty_println("\nIncluding '%s' in the root gradle project configuration (settings.gradle).\n" % name, console.bold)
        settings_gradle.write("include '%s'\n" % name)
Esempio n. 9
0
def add_catkin_generate_tree_command():
    for rel_path in ['.', '..']:
        build_gradle_path = os.path.join(os.getcwd(), rel_path, 'build.gradle')
        if os.path.isfile(build_gradle_path):
            break
        else:
            build_gradle_path = None
    if build_gradle_path is None:
        console.pretty_println(
            "\nCouldn't find the root level build.gradle file - not adding to the superproject."
        )
        return
    with open(build_gradle_path, 'r') as build_gradle:
        console.pretty_print('  File      : ', console.cyan)
        console.pretty_println('build.gradle (catkin_generate_tree update)',
                               console.yellow)
        new_contents = build_gradle.read().replace(
            "apply plugin: 'catkin'",
            "apply plugin: 'catkin'\nproject.catkin.tree.generate()\n")
    with open(build_gradle_path, 'w') as build_gradle:
        build_gradle.write(new_contents)
Esempio n. 10
0
def create_talker_listener_classes(project_name, template_directory, author):
    path = os.path.join(os.getcwd(), project_name.lower())
    package_name = os.path.basename(os.getcwd())
    java_package_path = os.path.join(path, 'src', 'main', 'java', 'com',
                                     'github', package_name, project_name)
    utils.mkdir_p(java_package_path)
    try:
        for template_name in ['Talker.java', 'Listener.java']:
            filename = os.path.join(java_package_path, template_name)
            template = utils.read_template_file(template_directory,
                                                template_name)
            contents = instantiate_code_template(template, package_name,
                                                 project_name, author)
            try:
                f = open(filename, 'w')
                f.write(contents)
                console.pretty_print('  File      : ', console.cyan)
                console.pretty_println(template_name, console.yellow)
            finally:
                f.close()
    except Exception:
        raise
Esempio n. 11
0
def create_gradle_package_files(args, template_directory):
    '''
      This is almost a direct copy from catkin_create_pkg.
    '''
    try:
        project_name = args.name[0].lower()
        package_path = os.path.abspath(os.path.join(os.getcwd(), project_name))
        for template_name in ['build.gradle']:  # 'CMakeLists.txt']:
            filename = os.path.join(package_path, template_name)
            template = utils.read_template_file(template_directory,
                                                template_name)
            contents = instantiate_template(template, project_name,
                                            args.author)
            try:
                f = open(filename, 'w')
                f.write(contents)
                console.pretty_print('  File      : ', console.cyan)
                console.pretty_println(template_name, console.yellow)
            finally:
                f.close()
    except Exception:
        raise
Esempio n. 12
0
def add_to_package_xml(name):
    '''
      Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
    '''
    for rel_path in ['.', '..']:
        package_xml_path = os.path.join(os.getcwd(), rel_path, 'package.xml')
        if os.path.isfile(package_xml_path):
            break
        else:
            package_xml_path = None
    if package_xml_path is None:
        console.pretty_println(
            "\nCouldn't find the root level package.xml file - not adding to the superproject."
        )
        return
    with open(package_xml_path, 'r') as package_xml:
        console.pretty_print('  File      : ', console.cyan)
        console.pretty_println('package.xml (dependency update)',
                               console.yellow)
        new_contents = package_xml.read().replace(
            "</package>", "<build_depend>%s</build_depend>\n</package>" % name)
    with open(package_xml_path, 'w') as package_xml:
        package_xml.write(new_contents)
Esempio n. 13
0
def add_tasks_to_cmake_setup(tasks):
    '''
      Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
    '''
    for rel_path in ['.', '..']:
        cmakelists_txt_path = os.path.join(os.getcwd(), rel_path,
                                           'CMakeLists.txt')
        if os.path.isfile(cmakelists_txt_path):
            break
        else:
            cmakelists_txt_path = None
    if cmakelists_txt_path is None:
        console.pretty_println(
            "\nCouldn't find the root level CMakeLists.txt - not adding to the superproject."
        )
        return
    with open(cmakelists_txt_path, 'r') as cmakelists_txt:
        old_contents = cmakelists_txt.read()
        result = re.search('^catkin_rosjava_setup\(.*\)', old_contents,
                           re.MULTILINE)
        if result is None:
            console.pretty_println(
                "\nCouldn't find a catkin_rosjava_setup entry in the CMakeLists.txt - not adding tasks."
            )
            return
        rosjava_setup_string = result.group(0)
        gradle_tasks = set([])
        if rosjava_setup_string.find("publish") == -1:
            gradle_tasks.add("publish")
        if rosjava_setup_string.find("install") == -1:
            gradle_tasks.add("install")
        gradle_tasks |= set(tasks)
        console.pretty_print('  File      : ', console.cyan)
        console.pretty_println('CMakeLists.txt (gradle task update)',
                               console.yellow)
        old_text = rosjava_setup_string
        new_text = 'catkin_rosjava_setup(' + ' '.join(gradle_tasks) + ')'
        new_contents = old_contents.replace(old_text, new_text)
    with open(cmakelists_txt_path, 'w') as cmakelists_txt:
        cmakelists_txt.write(new_contents)
def actually_create_android_project(package_name, target_version,
                                    java_package_name, is_library):
    path = os.path.join(os.getcwd(), package_name.lower())
    console.pretty_println("\nCreating android project ", console.bold)
    console.pretty_print("  Name      : ", console.cyan)
    console.pretty_println("%s" % package_name, console.yellow)
    console.pretty_print("  Target Ver: ", console.cyan)
    console.pretty_println("%s" % target_version, console.yellow)
    console.pretty_print("  Java Name : ", console.cyan)
    console.pretty_println("%s" % java_package_name, console.yellow)
    if is_library:
        console.pretty_print("  Library   : ", console.cyan)
        console.pretty_println("yes\n", console.yellow)
        cmd = [
            'android',
            'create',
            'lib-project',
            '-n',
            package_name,
            '-p',
            path,
            '-k',
            java_package_name,
            '-t',
            'android-' + target_version,
        ]
    else:
        activity_name = utils.camel_case(package_name)
        console.pretty_print("  Activity  : ", console.cyan)
        console.pretty_println("%s\n" % activity_name, console.yellow)
        cmd = [
            'android', 'create', 'project', '-n', package_name, '-p', path,
            '-k', java_package_name, '-t', 'android-' + target_version, '-a',
            activity_name
        ]
        print("Command: %s" % cmd)
    try:
        subprocess.check_call(cmd)
        print("Command: %s" % cmd)
    except subprocess.CalledProcessError:
        print("Error")
        raise subprocess.CalledProcessError(
            "failed to create android project.")
    # This is in the old form, let's shovel the shit around to the new form
    utils.mkdir_p(os.path.join(path, 'src', 'main', 'java'))
    os.remove(os.path.join(path, 'local.properties'))
    os.remove(os.path.join(path, 'project.properties'))
    os.remove(os.path.join(path, 'ant.properties'))
    os.remove(os.path.join(path, 'proguard-project.txt'))
    os.remove(os.path.join(path, 'build.xml'))
    os.rmdir(os.path.join(path, 'bin'))
    os.rmdir(os.path.join(path, 'libs'))
    shutil.move(os.path.join(path, 'AndroidManifest.xml'),
                os.path.join(path, 'src', 'main'))
    shutil.move(os.path.join(path, 'res'), os.path.join(path, 'src', 'main'))
    if not is_library:
        shutil.move(os.path.join(path, 'src',
                                 java_package_name.split('.')[0]),
                    os.path.join(path, 'src', 'main', 'java'))