7
7
from __future__ import print_function
8
8
9
9
import os
10
+ import re
10
11
import sys
11
12
import argparse
12
13
import xml .etree .ElementTree as ElementTree
@@ -151,7 +152,7 @@ def add_to_package_xml(name):
151
152
package_xml .write (new_contents )
152
153
153
154
154
- def add_install_app_to_cmake_targets ( ):
155
+ def add_tasks_to_cmake_setup ( tasks ):
155
156
'''
156
157
Adds project name to build_depends in package.xml (should be same name as the ros msg package name).
157
158
'''
@@ -165,11 +166,23 @@ def add_install_app_to_cmake_targets():
165
166
console .pretty_println ("\n Couldn't find the root level CMakeLists.txt - not adding to the superproject." )
166
167
return
167
168
with open (cmakelists_txt_path , 'r' ) as cmakelists_txt :
169
+ old_contents = cmakelists_txt .read ()
170
+ result = re .search ('^catkin_rosjava_setup\(.*\)' , old_contents , re .MULTILINE )
171
+ if result is None :
172
+ console .pretty_println ("\n Couldn't find a catkin_rosjava_setup entry in the CMakeLists.txt - not adding tasks." )
173
+ return
174
+ rosjava_setup_string = result .group (0 )
175
+ gradle_tasks = set ([])
176
+ if rosjava_setup_string .find ("publishMavenJavaPublicationToMavenRepository" ) != - 1 :
177
+ gradle_tasks .add ("publishMavenJavaPublicationToMavenRepository" )
178
+ if rosjava_setup_string .find ("installApp" ) != - 1 :
179
+ gradle_tasks .add ("installApp" )
180
+ gradle_tasks |= set (tasks )
168
181
console .pretty_print (' File : ' , console .cyan )
169
182
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 )
183
+ old_text = rosjava_setup_string
184
+ new_text = 'catkin_rosjava_setup(' + ' ' . join ( gradle_tasks ) + ' )'
185
+ new_contents = old_contents .replace (old_text , new_text )
173
186
with open (cmakelists_txt_path , 'w' ) as cmakelists_txt :
174
187
cmakelists_txt .write (new_contents )
175
188
@@ -223,14 +236,15 @@ def create_rosjava_project():
223
236
author = args .author
224
237
create_rosjava_project_common (args , 'rosjava_project' )
225
238
create_talker_listener_classes (project_name , 'rosjava_project' , author )
226
- add_install_app_to_cmake_targets ( )
239
+ add_tasks_to_cmake_setup ([ 'installApp' , 'publishMavenJavaPublicationToMavenRepository' ] )
227
240
228
241
229
242
def create_rosjava_library_project ():
230
243
args = parse_arguments ()
231
244
project_name = args .name [0 ]
232
245
create_rosjava_project_common (args , 'rosjava_library_project' )
233
246
create_dummy_java_class (project_name )
247
+ add_tasks_to_cmake_setup (['publishMavenJavaPublicationToMavenRepository' ])
234
248
235
249
236
250
def create_rosjava_msg_project ():
@@ -239,3 +253,4 @@ def create_rosjava_msg_project():
239
253
create_rosjava_project_common (args , 'rosjava_msg_project' )
240
254
add_catkin_generate_tree_command ()
241
255
add_to_package_xml (project_name )
256
+ add_tasks_to_cmake_setup (['publishMavenJavaPublicationToMavenRepository' ])
0 commit comments