@@ -46,6 +46,10 @@ def instantiate_template(template, project_name, author):
4646 return template % locals ()
4747
4848
49+ def instantiate_code_template (template , package_name , project_name , author ):
50+ return template % locals ()
51+
52+
4953def create_gradle_package_files (args , template_directory ):
5054 '''
5155 This is almost a direct copy from catkin_create_pkg.
@@ -68,6 +72,27 @@ def create_gradle_package_files(args, template_directory):
6872 raise
6973
7074
75+ def create_talker_listener_classes (project_name , template_directory , author ):
76+ path = os .path .join (os .getcwd (), project_name .lower ())
77+ package_name = os .path .basename (os .getcwd ())
78+ java_package_path = os .path .join (path , 'src' , 'main' , 'java' , 'com' , 'github' , package_name , project_name )
79+ utils .mkdir_p (java_package_path )
80+ try :
81+ for template_name in ['Talker.java' , 'Listener.java' ]:
82+ filename = os .path .join (java_package_path , template_name )
83+ template = utils .read_template_file (template_directory , template_name )
84+ contents = instantiate_code_template (template , package_name , project_name , author )
85+ try :
86+ f = open (filename , 'w' )
87+ f .write (contents )
88+ console .pretty_print (' File : ' , console .cyan )
89+ console .pretty_println (template_name , console .yellow )
90+ finally :
91+ f .close ()
92+ except Exception :
93+ raise
94+
95+
7196def add_to_root_gradle_settings (name ):
7297 '''
7398 Adds project name to the root level settings.gradle file.
@@ -126,9 +151,33 @@ def add_to_package_xml(name):
126151 package_xml .write (new_contents )
127152
128153
154+ def add_install_app_to_cmake_targets ():
155+ '''
156+ Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
157+ '''
158+ for rel_path in ['.' , '..' ]:
159+ cmakelists_txt_path = os .path .join (os .getcwd (), rel_path , 'CMakeLists.txt' )
160+ if os .path .isfile (cmakelists_txt_path ):
161+ break
162+ else :
163+ cmakelists_txt_path = None
164+ if cmakelists_txt_path is None :
165+ console .pretty_println ("\n Couldn't find the root level CMakeLists.txt - not adding to the superproject." )
166+ return
167+ with open (cmakelists_txt_path , 'r' ) as cmakelists_txt :
168+ console .pretty_print (' File : ' , console .cyan )
169+ console .pretty_println ('CMakeLists.txt (gradle task update)' , console .yellow )
170+ old_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository)'
171+ new_text = 'catkin_rosjava_setup(publishMavenJavaPublicationToMavenRepository installApp)'
172+ new_contents = cmakelists_txt .read ().replace (old_text , new_text )
173+ with open (cmakelists_txt_path , 'w' ) as cmakelists_txt :
174+ cmakelists_txt .write (new_contents )
175+
176+
129177def create_dummy_java_class (project_name ):
130178 path = os .path .join (os .getcwd (), project_name .lower ())
131- java_package_path = os .path .join (path , 'src' , 'main' , 'java' , 'com' , 'github' , 'rosjava' , project_name )
179+ package_name = os .path .basename (os .getcwd ())
180+ java_package_path = os .path .join (path , 'src' , 'main' , 'java' , 'com' , 'github' , package_name , project_name )
132181 utils .mkdir_p (java_package_path )
133182 filename = os .path .join (java_package_path , 'Dude.java' )
134183 java_class = "package com.github.rosjava.%s.Dude;\n " % project_name
@@ -170,12 +219,23 @@ def create_rosjava_project_common(args, template_directory):
170219
171220def create_rosjava_project ():
172221 args = parse_arguments ()
222+ project_name = args .name [0 ]
223+ author = args .author
173224 create_rosjava_project_common (args , 'rosjava_project' )
174- create_dummy_java_class (args .name [0 ])
225+ create_talker_listener_classes (project_name , 'rosjava_project' , author )
226+ add_install_app_to_cmake_targets ()
227+
228+
229+ def create_rosjava_library_project ():
230+ args = parse_arguments ()
231+ project_name = args .name [0 ]
232+ create_rosjava_project_common (args , 'rosjava_library_project' )
233+ create_dummy_java_class (project_name )
175234
176235
177236def create_rosjava_msg_project ():
178237 args = parse_arguments ()
238+ project_name = args .name [0 ]
179239 create_rosjava_project_common (args , 'rosjava_msg_project' )
180240 add_catkin_generate_tree_command ()
181- add_to_package_xml (args . name [ 0 ] )
241+ add_to_package_xml (project_name )
0 commit comments