func copyGoModToTemp(filename string) (tempDir string, err error) {
	goModOrig, err := os.Open(filename)
	if err != nil {
		return "", err
	}
	defer goModOrig.Close()

	tempDir, err = ioutil.TempDir("", "gazelle-temp-gomod")
	if err != nil {
		return "", err
	}

	goModCopy, err := os.Create(filepath.Join(tempDir, "go.mod"))
	if err != nil {
		os.Remove(tempDir)
		return "", err
	}
	defer func() {
		if cerr := goModCopy.Close(); err == nil && cerr != nil {
			err = cerr
		}
	}()

	_, err = io.Copy(goModCopy, goModOrig)
	if err != nil {
		os.RemoveAll(tempDir)
		return "", err
	}
	return tempDir, err
}
func copyGoModToTemp(filename string) (tempDir string, err error) {
	goModOrig, err := os.Open(filename)
	if err != nil {
		return "", err
	}
	defer goModOrig.Close()

	tempDir, err = ioutil.TempDir("", "gazelle-temp-gomod")
	if err != nil {
		return "", err
	}

	goModCopy, err := os.Create(filepath.Join(tempDir, "go.mod"))
	if err != nil {
		os.Remove(tempDir)
		return "", err
	}
	defer func() {
		if cerr := goModCopy.Close(); err == nil && cerr != nil {
			err = cerr
		}
	}()

	_, err = io.Copy(goModCopy, goModOrig)
	if err != nil {
		os.RemoveAll(tempDir)
		return "", err
	}
	return tempDir, err
}
func copyGoModToTemp ( filename string ) ( tempDir string , err error ) { goModOrig , err := os . Open ( filename ) if err != nil { return " " , err } defer goModOrig . Close ( ) tempDir , err = ioutil . TempDir ( " " , " " ) if err != nil { return " " , err } goModCopy , err := os . Create ( filepath . Join ( tempDir , " " ) ) if err != nil { os . Remove ( tempDir ) return " " , err } defer func ( ) { if cerr := goModCopy . Close ( ) ; err == nil && cerr != nil { err = cerr } } ( ) _ , err = io . Copy ( goModCopy , goModOrig ) if err != nil { os . RemoveAll ( tempDir ) return " " , err } return tempDir , err }
// copyGoModToTemp copies to given go.mod file to a temporary directory.
// go list tends to mutate go.mod files, but gazelle shouldn't do that.
copyGoModToTemp copies to given go . mod file to a temporary directory . go list tends to mutate go . mod files but gazelle shouldn t do that .