def test_generate_git(): d = _get_test_dist() r = generate_rosinstall(d, ['betty'])[0] assert r['git']['local-name'] == 'riverdale/betty' assert r['git']['version'] == 'release/indigo/betty/1.2.3-0' assert r['git']['uri'] == 'https://example.com/riverdale-release.git' r = generate_rosinstall(d, ['betty'], flat=True)[0] assert r['git']['local-name'] == 'betty'
def test_generate_tar(): d = _get_test_dist() r = generate_rosinstall(d, ['archie'], tar=True)[0] assert 'tar' not in r d.repositories['riverdale'].release_repository.url = 'https://github.com/example/riverdale-release.git' r = generate_rosinstall(d, ['archie'], tar=True)[0] assert r['tar']['uri'] == 'https://github.com/example/riverdale-release/archive/release/indigo/archie/1.2.3-0.tar.gz' d.repositories['riverdale'].release_repository.url = 'https://bitbucket.org/example/riverdale-release.git' r = generate_rosinstall(d, ['archie'], tar=True)[0] assert r['tar']['uri'] == 'https://bitbucket.org/example/riverdale-release/get/release/indigo/archie/1.2.3-0.tar.gz' d.repositories['riverdale'].release_repository.url = 'https://gitlab.example.com/example/riverdale-release.git' r = generate_rosinstall(d, ['archie'], tar=True)[0] assert r['tar']['uri'] == 'https://gitlab.example.com/example/riverdale-release/repository/archive.tar.gz?ref=release/indigo/archie/1.2.3-0'
def main(): rosdistro_index = rosdistro.get_index(ROSDISTRO_URL) cache = generate_distribution_cache(rosdistro_index, 'indigo') cached_distro = rosdistro.get_cached_distribution(rosdistro_index, 'indigo', cache=cache) root_packages = {'roscpp'} package_names = root_packages.union( get_recursive_dependencies(cached_distro, root_packages)) print(f'Found {len(package_names)} packages.') rosinstall_data = generate_rosinstall(cached_distro, package_names, flat=True, tar=True) remote_files = [] for rosinstall_pkg in rosinstall_data: name = rosinstall_pkg['tar']['local-name'] url = rosinstall_pkg['tar']['uri'].replace('.tar.gz', '.zip') print(name, url) # Fetch tarball to get its sha1sum r = requests.get(url) r.raise_for_status() sha1sum = hashlib.sha1(r.content).hexdigest() remote_files.append({ 'name': name, 'url': url, 'sha1': sha1sum, }) sh.mkdir('-p', 'ros/rosdistro') # Save BUCK file with remote_file rules with open('ros/rosdistro/BUCK', 'w') as out_f: for rf in remote_files: s = f"""remote_file( name = '{rf['name']}.zip', url = '{rf['url']}', sha1 = '{rf['sha1']}', visibility = ['PUBLIC'], ) """ out_f.write(s) # Save DEFS file with the list of tarballs with open('ros/rosdistro/DEFS', 'w') as out_f: out_f.write("rosdistro_tarballs = [\n{}\n]".format('\n'.join([ f" '//ros/rosdistro:{rf['name']}.zip'," for rf in remote_files ])))
def test_generate_tar_from_ssh(): d = _get_test_dist() d.repositories['riverdale'].release_repository.url = '[email protected]:example/riverdale-release.git' r = generate_rosinstall(d, ['archie'], tar=True)[0] assert r['tar']['uri'] == 'https://gitlab.example.com/example/riverdale-release/repository/archive.tar.gz?ref=release/indigo/archie/1.2.3-0'