@@ -197,6 +197,8 @@ def __init__(self, name, repository):
197
197
198
198
def _fetch_package_xml (self , rosdistro ):
199
199
repo = self .repository
200
+ supported_non_githubs = [ 'gitlab' , 'bitbucket' ]
201
+
200
202
if 'github.com' in repo .url :
201
203
url = repo .url
202
204
release_tag = 'release/{0}/{1}/{2}' .format (rosdistro , self .name , repo .version )
@@ -222,7 +224,18 @@ def _fetch_package_xml(self, rosdistro):
222
224
self ._release_tags [rosdistro ] = release_tag
223
225
return package_xml , release_tag
224
226
else :
225
- raise Exception ("Non-github repositories are net yet supported by the rosdistro tool" )
227
+ release_tag = 'release/{0}/{1}/{2}' .format (rosdistro , self .name , repo .version )
228
+ url = repo .url
229
+ try :
230
+ # URL extension for GitLab/BitBucket repos
231
+ url = url .replace ('.git' , '/raw/{0}/package.xml' .format (release_tag ))
232
+ package_xml = urlopen (url ).read ()
233
+ self ._package_xmls [rosdistro ] = package_xml
234
+ self ._release_tags [rosdistro ] = release_tag
235
+ return package_xml , release_tag
236
+ except Exception as e :
237
+ msg = "Failed to read package.xml file from url '{0}': {1}" .format (url , e ))
238
+ raise RuntimeError (msg )
226
239
227
240
def get_package_xml (self , rosdistro ):
228
241
if rosdistro not in self ._package_xmls :
0 commit comments