func prepareContainerSpecificDirectories()

in internal/core/startup/prepare.go [167:213]


func prepareContainerSpecificDirectories(prod product.Product, cacheDir string, confDir string) {
	homeDir, err := os.UserHomeDir()
	if err != nil {
		log.Fatal(err)
	}
	userPrefsDir := filepath.Join(homeDir, ".java", ".userPrefs")
	MakeDirAll(userPrefsDir)

	switch prod.BaseScriptName {
	case product.Rider:
		nugetDir := filepath.Join(cacheDir, nugetDir)
		if err := os.Setenv("NUGET_PACKAGES", nugetDir); err != nil {
			log.Fatal(err)
		}
		MakeDirAll(nugetDir)
	case product.Idea:
		MakeDirAll(filepath.Join(cacheDir, m2))
		if err = os.Setenv("GRADLE_USER_HOME", filepath.Join(cacheDir, "gradle")); err != nil {
			log.Fatal(err)
		}
	}

	writeFileIfNew(filepath.Join(userPrefsDir, "prefs.xml"), userPrefsXml)

	ideaOptions := filepath.Join(confDir, "options")

	if prod.BaseScriptName == product.Idea {
		mavenRootDir := filepath.Join(homeDir, ".m2")
		if _, err = os.Stat(mavenRootDir); os.IsNotExist(err) {
			if err = os.MkdirAll(mavenRootDir, 0o755); err != nil {
				log.Fatal(err)
			}
		}

		writeFileIfNew(filepath.Join(mavenRootDir, "settings.xml"), mavenSettingsXml)
		writeFileIfNew(filepath.Join(ideaOptions, "path.macros.xml"), mavenPathMacroxXml)

		androidSdk := os.Getenv(qdenv.AndroidSdkRoot)
		if androidSdk != "" {
			writeFileIfNew(filepath.Join(ideaOptions, "project.default.xml"), androidProjectDefaultXml(androidSdk))
			corettoSdk := os.Getenv(qdenv.QodanaCorettoSdk)
			if corettoSdk != "" {
				writeFileIfNew(filepath.Join(ideaOptions, "jdk.table.xml"), jdkTableXml(corettoSdk))
			}
		}
	}
}