diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-10-08 17:16:58 +0100 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-11-04 12:40:54 +0000 |
commit | fca354cdef1feb13a90487b351ef266faf220b69 (patch) | |
tree | c8d425cbc57af4fd0c5e4b92ededb018a8156ae0 | |
parent | 44d355e048ab427aed0af0d01e72feb8e7b06b0b (diff) | |
download | import-fca354cdef1feb13a90487b351ef266faf220b69.tar.gz |
Filter urls
Lorry doesn't support all the types of archive we'll find on pypi
-rwxr-xr-x | import/pip.to_lorry | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/import/pip.to_lorry b/import/pip.to_lorry index 46f7dd1..b5e8dba 100755 --- a/import/pip.to_lorry +++ b/import/pip.to_lorry @@ -52,7 +52,10 @@ def is_repo(url): return False -def make_lorry(name, url): +# also we only allow tar urls >.> +# need a compression flag for bzip I think >.> + +def make_tarball_lorry(name, url): return '''{ "%s-tarball": { "type": "tarball", @@ -75,6 +78,16 @@ def ask_user(client, xs, fn, prompt='--> '): return choice +def filter_urls(urls): + allowed_extensions = ['tar.gz', 'tgz', 'tar.Z', '.tar.bz2', 'tbz2', + 'tar.lzma', 'tar.xz', 'tlz', 'txz', 'tar'] + + def allowed_extension(url): + return ('.'.join(url['url'].split('.')[-2:]) in allowed_extensions + or url['url'].split('.')[-1:] in allowed_extensions) + + return filter(allowed_extension, urls) + def generate_lorry_from_tarball(package_name): client = xmlrpclib.ServerProxy(PYPI_URL) releases = client.package_releases(package_name) @@ -90,7 +103,7 @@ def generate_lorry_from_tarball(package_name): if len(releases) > 1 else 0) release_version = releases[choice] - urls = client.release_urls(package_name, release_version) + urls = filter_urls(client.release_urls(package_name, release_version)) if len(urls) == 0: print("Couldn't get download urls for package %s with release %s, exiting" @@ -101,7 +114,7 @@ def generate_lorry_from_tarball(package_name): prompt='Select url: ') if len(urls) > 1 else 0) url = urls[choice]['url'] - return make_lorry(package_name, url) + return make_tarball_lorry(package_name, url) if len(sys.argv) != 2: print('usage: %s python_package' % sys.argv[0], file=sys.stderr) |