diff --git a/.codacy/cli-config.yaml b/.codacy/cli-config.yaml new file mode 100644 index 00000000..6ae4b29d --- /dev/null +++ b/.codacy/cli-config.yaml @@ -0,0 +1 @@ +mode: local \ No newline at end of file diff --git a/cmd/init.go b/cmd/init.go index 203b799d..ca09413a 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -32,11 +32,13 @@ var initCmd = &cobra.Command{ config.Config.CreateLocalCodacyDir() - if len(codacyRepositoryToken) == 0 { + cliLocalMode := len(codacyRepositoryToken) == 0 + + if cliLocalMode { fmt.Println() fmt.Println("ℹ️ No project token was specified, skipping fetch configurations") noTools := []tools.Tool{} - err := createConfigurationFile(noTools) + err := createConfigurationFiles(noTools, cliLocalMode) if err != nil { log.Fatal(err) } @@ -45,7 +47,7 @@ var initCmd = &cobra.Command{ if err != nil { log.Fatal(err) } - err = createConfigurationFile(apiTools) + err = createConfigurationFiles(apiTools, cliLocalMode) if err != nil { log.Fatal(err) } @@ -64,7 +66,7 @@ var initCmd = &cobra.Command{ }, } -func createConfigurationFile(tools []tools.Tool) error { +func createConfigurationFiles(tools []tools.Tool, cliLocalMode bool) error { configFile, err := os.Create(config.Config.ProjectConfigFile()) defer configFile.Close() if err != nil { @@ -76,6 +78,17 @@ func createConfigurationFile(tools []tools.Tool) error { log.Fatal(err) } + cliConfigFile, err := os.Create(config.Config.CliConfigFile()) + defer cliConfigFile.Close() + if err != nil { + log.Fatal(err) + } + + _, err = cliConfigFile.WriteString(cliConfigFileTemplate(cliLocalMode)) + if err != nil { + log.Fatal(err) + } + return nil } @@ -113,9 +126,21 @@ tools: `, eslintVersion, trivyVersion, pylintVersion, pmdVersion) } +func cliConfigFileTemplate(cliLocalMode bool) string { + var cliModeString string + + if cliLocalMode { + cliModeString = "local" + } else { + cliModeString = "remote" + } + + return fmt.Sprintf(`mode: %s`, cliModeString) +} + func buildRepositoryConfigurationFiles(token string) error { - fmt.Println("Building project configuration files ...") - fmt.Println("Fetching project configuration from codacy ...") + fmt.Println("Building repository configuration files ...") + fmt.Println("Fetching repository configuration from codacy ...") // API call to fetch settings url := CodacyApiBase + "/2.0/project/analysis/configuration" diff --git a/config/config.go b/config/config.go index 3abd16df..8bff582d 100644 --- a/config/config.go +++ b/config/config.go @@ -16,6 +16,7 @@ type ConfigType struct { toolsDirectory string localCodacyDirectory string projectConfigFile string + cliConfigFile string runtimes map[string]*plugins.RuntimeInfo tools map[string]*plugins.ToolInfo @@ -45,6 +46,10 @@ func (c *ConfigType) ProjectConfigFile() string { return c.projectConfigFile } +func (c *ConfigType) CliConfigFile() string { + return c.cliConfigFile +} + func (c *ConfigType) Runtimes() map[string]*plugins.RuntimeInfo { return c.runtimes } @@ -89,14 +94,8 @@ func (c *ConfigType) setupCodacyPaths() { c.toolsDirectory = filepath.Join(c.globalCacheDirectory, "tools") c.localCodacyDirectory = ".codacy" - yamlPath := filepath.Join(c.localCodacyDirectory, "codacy.yaml") - ymlPath := filepath.Join(c.localCodacyDirectory, "codacy.yml") - - if _, err := os.Stat(ymlPath); err == nil { - c.projectConfigFile = ymlPath - } else { - c.projectConfigFile = yamlPath - } + c.projectConfigFile = filepath.Join(c.localCodacyDirectory, "codacy.yaml") + c.cliConfigFile = filepath.Join(c.localCodacyDirectory, "cli-config.yaml") } func (c *ConfigType) CreateCodacyDirs() error {