@@ -3,6 +3,8 @@ package cmd
33import (
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