import os
import sys
import urllib.parse
import urllib.request

from config import libs


def fetch(url):
    depends_filename = None
    for lib in libs.values():
        if lib["url"] == url:
            depends_filename = lib["filename"]
            break
    if depends_filename and os.path.exists(depends_filename):
        return depends_filename
    name = urllib.parse.urlsplit(url)[2].split("/")[-1]

    if not os.path.exists(name):

        def retrieve(request_url):
            print("Fetching", request_url)
            try:
                return urllib.request.urlopen(request_url)
            except urllib.error.URLError:
                return urllib.request.urlopen(request_url)

        try:
            r = retrieve(url)
        except urllib.error.HTTPError:
            if depends_filename:
                r = retrieve(
                    "https://github.com/python-pillow/pillow-depends/raw/master/"
                    + depends_filename
                )
                name = depends_filename
        content = r.read()
        with open(name, "wb") as fd:
            fd.write(content)
    return name


if __name__ == "__main__":
    fetch(sys.argv[1])