in custom-targets/util/clouddeploy/clouddeploy.go [408:432]
func downloadGCS(ctx context.Context, gcsClient *storage.Client, gcsURI, localPath string) (*os.File, error) {
gcsObj, err := parseGCSURI(gcsURI)
if err != nil {
return nil, err
}
r, err := gcsClient.Bucket(gcsObj.bucket).Object(gcsObj.name).NewReader(ctx)
if err != nil {
return nil, err
}
defer r.Close()
if err := os.MkdirAll(filepath.Dir(localPath), os.ModePerm); err != nil {
return nil, err
}
file, err := os.Create(localPath)
if err != nil {
return nil, err
}
defer file.Close()
if _, err := io.Copy(file, r); err != nil {
return nil, err
}
return file, nil
}