Skip to content

Commit 448635c

Browse files
updated to use the ight v2 endpoint
1 parent 5d06a3a commit 448635c

10 files changed

Lines changed: 5338 additions & 800 deletions

cmd/init.go

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package cmd
33
import (
44
"codacy/cli-v2/config"
55
"codacy/cli-v2/tools"
6+
"codacy/cli-v2/tools/pylint"
7+
"codacy/cli-v2/tools/types"
68
"encoding/json"
79
"errors"
810
"fmt"
@@ -154,7 +156,7 @@ func buildRepositoryConfigurationFiles(token string) error {
154156
var objmap map[string]json.RawMessage
155157
_ = json.Unmarshal(body, &objmap)
156158

157-
var apiToolConfigurations []CodacyToolConfiguration
159+
var apiToolConfigurations []types.ToolConfiguration
158160
err = json.Unmarshal(objmap["toolConfiguration"], &apiToolConfigurations)
159161

160162
eslintApiConfiguration := extractESLintConfiguration(apiToolConfigurations)
@@ -192,19 +194,29 @@ func buildRepositoryConfigurationFiles(token string) error {
192194
fmt.Println("Default Trivy configuration created")
193195
}
194196

197+
pylintApiConfiguration := extractPylintConfiguration(apiToolConfigurations)
198+
199+
if pylintApiConfiguration != nil {
200+
err = createPylintConfigFile(*pylintApiConfiguration)
201+
if err != nil {
202+
log.Fatal(err)
203+
}
204+
fmt.Println("Pylint configuration created based on Codacy settings")
205+
}
206+
195207
return nil
196208
}
197209

198-
func convertAPIToolConfigurationToDomain(config CodacyToolConfiguration) tools.ToolConfiguration {
210+
func convertAPIToolConfigurationToDomain(config types.ToolConfiguration) tools.ToolConfiguration {
199211
var patterns []tools.PatternConfiguration
200212

201213
for _, pattern := range config.Patterns {
202214
var parameters []tools.PatternParameterConfiguration
203215

204216
for _, parameter := range pattern.Parameters {
205217
parameters = append(parameters, tools.PatternParameterConfiguration{
206-
Name: parameter.name,
207-
Value: parameter.value,
218+
Name: parameter.Name,
219+
Value: parameter.Value,
208220
})
209221
}
210222

@@ -222,13 +234,13 @@ func convertAPIToolConfigurationToDomain(config CodacyToolConfiguration) tools.T
222234
}
223235
}
224236

225-
func extractESLintConfiguration(toolConfigurations []CodacyToolConfiguration) *CodacyToolConfiguration {
237+
func extractESLintConfiguration(toolConfigurations []types.ToolConfiguration) *types.ToolConfiguration {
226238

227239
//ESLInt internal codacy uuid, to filter ot not ESLint tools
228-
//"f8b29663-2cb2-498d-b923-a10c6a8c05cd"
240+
const ESLintUUID = "f8b29663-2cb2-498d-b923-a10c6a8c05cd"
229241

230242
for _, toolConfiguration := range toolConfigurations {
231-
if toolConfiguration.Uuid == "f8b29663-2cb2-498d-b923-a10c6a8c05cd" {
243+
if toolConfiguration.Uuid == ESLintUUID {
232244
return &toolConfiguration
233245
}
234246
}
@@ -237,7 +249,7 @@ func extractESLintConfiguration(toolConfigurations []CodacyToolConfiguration) *C
237249
}
238250

239251
// extractTrivyConfiguration extracts Trivy configuration from the Codacy API response
240-
func extractTrivyConfiguration(toolConfigurations []CodacyToolConfiguration) *CodacyToolConfiguration {
252+
func extractTrivyConfiguration(toolConfigurations []types.ToolConfiguration) *types.ToolConfiguration {
241253
// Trivy internal codacy uuid
242254
const TrivyUUID = "2fd7fbe0-33f9-4ab3-ab73-e9b62404e2cb"
243255

@@ -250,25 +262,28 @@ func extractTrivyConfiguration(toolConfigurations []CodacyToolConfiguration) *Co
250262
return nil
251263
}
252264

253-
type CodacyToolConfiguration struct {
254-
Uuid string `json:"uuid"`
255-
IsEnabled bool `json:"isEnabled"`
256-
Patterns []PatternConfiguration `json:"patterns"`
257-
}
265+
func extractPylintConfiguration(toolConfigurations []types.ToolConfiguration) *types.ToolConfiguration {
266+
const PylintUUID = "31677b6d-4ae0-4f56-8041-606a8d7a8e61"
258267

259-
type PatternConfiguration struct {
260-
InternalId string `json:"internalId"`
261-
Parameters []ParameterConfiguration `json:"parameters"`
268+
for _, toolConfiguration := range toolConfigurations {
269+
if toolConfiguration.Uuid == PylintUUID {
270+
return &toolConfiguration
271+
}
272+
}
273+
return nil
262274
}
263275

264-
type ParameterConfiguration struct {
265-
name string `json:"name"`
266-
value string `json:"value"`
276+
func createPylintConfigFile(config types.ToolConfiguration) error {
277+
if config.IsEnabled {
278+
pylintConfigurationString := pylint.GeneratePylintRC(config)
279+
return os.WriteFile(".pylintrc", []byte(pylintConfigurationString), 0644)
280+
}
281+
return nil
267282
}
268283

269284
// createTrivyConfigFile creates a trivy.yaml configuration file based on the API configuration
270-
func createTrivyConfigFile(config CodacyToolConfiguration) error {
271-
// Convert CodacyToolConfiguration to tools.ToolConfiguration
285+
func createTrivyConfigFile(config types.ToolConfiguration) error {
286+
// Convert ToolConfiguration to tools.ToolConfiguration
272287
trivyDomainConfiguration := convertAPIToolConfigurationForTrivy(config)
273288

274289
// Use the shared CreateTrivyConfig function to generate the config content
@@ -279,7 +294,7 @@ func createTrivyConfigFile(config CodacyToolConfiguration) error {
279294
}
280295

281296
// convertAPIToolConfigurationForTrivy converts API tool configuration to domain model for Trivy
282-
func convertAPIToolConfigurationForTrivy(config CodacyToolConfiguration) tools.ToolConfiguration {
297+
func convertAPIToolConfigurationForTrivy(config types.ToolConfiguration) tools.ToolConfiguration {
283298
var patterns []tools.PatternConfiguration
284299

285300
// Only process if tool is enabled
@@ -292,7 +307,7 @@ func convertAPIToolConfigurationForTrivy(config CodacyToolConfiguration) tools.T
292307

293308
// Check if there's an explicit enabled parameter
294309
for _, param := range pattern.Parameters {
295-
if param.name == "enabled" && param.value == "false" {
310+
if param.Name == "enabled" && param.Value == "false" {
296311
patternEnabled = false
297312
}
298313
}

0 commit comments

Comments
 (0)