def download_bazel_into_directory()

in bazelisk.py [0:0]


def download_bazel_into_directory(version, is_commit, directory):
    bazel_filename = determine_bazel_filename(version)
    url = determine_url(version, is_commit, bazel_filename)

    filename_suffix = determine_executable_filename_suffix()
    bazel_directory_name = trim_suffix(bazel_filename, filename_suffix)
    destination_dir = os.path.join(directory, bazel_directory_name, "bin")
    maybe_makedirs(destination_dir)

    destination_path = os.path.join(destination_dir, "bazel" + filename_suffix)
    if not os.path.exists(destination_path):
        sys.stderr.write("Downloading {}...\n".format(url))
        with tempfile.NamedTemporaryFile(prefix="bazelisk", dir=destination_dir, delete=False) as t:
            # https://github.com/bazelbuild/bazelisk/issues/247
            request = Request(url)
            if "BAZELISK_BASE_URL" in os.environ:
                parts = urlparse(url)
                creds = None
                try:
                    creds = netrc.netrc().hosts.get(parts.netloc)
                except:
                    pass
                if creds is not None:
                    auth = base64.b64encode(("%s:%s" % (creds[0], creds[2])).encode("ascii"))
                    request.add_header("Authorization", "Basic %s" % auth.decode("utf-8"))
            with closing(urlopen(request)) as response:
                shutil.copyfileobj(response, t)
            t.flush()
            os.fsync(t.fileno())
        os.rename(t.name, destination_path)
        os.chmod(destination_path, 0o755)

    return destination_path