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