in pkg/rbeconfigsgen/rbeconfigsgen.go [372:401]
func installBazelisk(d *dockerRunner, downloadDir, execOS string) (string, error) {
url, filename, err := BazeliskDownloadInfo(execOS)
if err != nil {
return "", fmt.Errorf("unable to determine how to download Bazelisk for execution OS %q: %w", execOS, err)
}
resp, err := http.Get(url)
if err != nil {
return "", fmt.Errorf("unable to initiate download for Bazelisk from %s: %w", url, err)
}
defer resp.Body.Close()
localPath := path.Join(downloadDir, filename)
o, err := os.Create(localPath)
if err != nil {
return "", fmt.Errorf("unable to open a file at %q to download Bazelisk to: %w", localPath, err)
}
if _, err := io.Copy(o, resp.Body); err != nil {
return "", fmt.Errorf("error while downloading Bazelisk to %s: %w", localPath, err)
}
bazeliskContainerPath := path.Join(d.workdir, filename)
if err := d.copyToContainer(localPath, bazeliskContainerPath); err != nil {
return "", fmt.Errorf("failed to copy the downloaded Bazelisk binary into the container: %w", err)
}
if _, err := d.execCmd("chmod", "+x", bazeliskContainerPath); err != nil {
return "", fmt.Errorf("failed to mark the Bazelisk binary as executable inside the container: %w", err)
}
return bazeliskContainerPath, nil
}