func()

in gcs-fetcher/pkg/fetcher/fetcher.go [670:696]


func (gf *Fetcher) copyFile(name string, mode os.FileMode, rc io.ReadCloser) (err error) {
	defer func() {
		if cerr := rc.Close(); cerr != nil {
			err = fmt.Errorf("Failed to close file %q: %v", name, cerr)
		}
	}()

	targetFile := filepath.Join(gf.DestDir, name)
	if err := gf.OS.MkdirAll(filepath.Dir(targetFile), mode); err != nil {
		return err
	}

	targetWriter, err := os.OpenFile(targetFile, os.O_WRONLY|os.O_CREATE, mode)
	if err != nil {
		return fmt.Errorf("failed to open target file %q: %v", targetFile, err)
	}
	defer func() {
		if cerr := targetWriter.Close(); cerr != nil {
			err = fmt.Errorf("Failed to close file %q: %v", targetFile, cerr)
		}
	}()

	if _, err := io.Copy(targetWriter, rc); err != nil {
		return fmt.Errorf("failed to copy %q to %q: %v", name, targetFile, err)
	}
	return nil
}