in internal/platform/effectiveconfig/config.go [43:127]
func CreateEffectiveConfigFiles(
localQodanaYamlFullPath string,
globalConfigurationsDir string,
globalConfigId string,
jrePath string,
effectiveConfigDir string,
logDir string,
) (Files, error) {
if globalConfigId != "" && globalConfigurationsDir == "" {
return Files{}, fmt.Errorf(
"global configuration id %s is defined without global cofigurations directory",
globalConfigId,
)
}
if globalConfigurationsDir != "" && globalConfigId == "" {
return Files{}, fmt.Errorf(
"global configurations directory %s is defined without global configuration id",
globalConfigurationsDir,
)
}
globalConfigurationsFile := ""
if globalConfigurationsDir != "" {
globalConfigurationsYamlFilename := "qodana-global-configurations.yaml"
globalConfigurationsFile = filepath.Join(globalConfigurationsDir, globalConfigurationsYamlFilename)
if !isFileExists(globalConfigurationsFile) {
msg.ErrorMessage(
"%s file not found in global configuration directory %s",
globalConfigurationsYamlFilename,
globalConfigurationsDir,
)
return Files{}, fmt.Errorf("%s doesn't exist", globalConfigurationsFile)
}
}
configLoaderTempDir, cleanup, err := utils.CreateTempDir("config-loader-cli")
if err != nil {
return Files{}, err
}
defer cleanup()
configLoaderCliJar, err := createConfigLoaderCliJar(configLoaderTempDir)
if err != nil {
return Files{}, err
}
defer func(name string) {
err := os.Remove(name)
if err != nil {
log.Warnf("Failed to delete config-loader-cli.jar: %v", err)
}
}(configLoaderCliJar)
args, err := configurationLoaderCliArgs(
jrePath,
configLoaderCliJar,
localQodanaYamlFullPath,
globalConfigurationsFile,
globalConfigId,
effectiveConfigDir,
)
if err != nil {
return Files{}, err
}
log.Debugf("Creating effective configuration in '%s' directory, args: %v", effectiveConfigDir, args)
if _, _, res, err := utils.LaunchAndLog(logDir, "config-loader-cli", args...); res > 0 || err != nil {
if err == nil {
err = errors.New("failed to create effective configuration")
} else {
err = fmt.Errorf("failed to create effective configuration: %v", err)
}
msg.ErrorMessage("Failed to create effective configuration.")
return Files{}, err
}
effectiveQodanaYamlData, err := getEffectiveQodanaYamlData(effectiveConfigDir)
if err != nil {
return Files{}, err
}
err = verifyEffectiveQodanaYamlIdeAndLinterMatchLocal(effectiveQodanaYamlData, localQodanaYamlFullPath)
if err != nil {
return Files{}, err
}
msg.SuccessMessage("Loaded Qodana Configuration")
return effectiveQodanaYamlData, nil
}