@@ -71,7 +71,9 @@ func NewScanCommand(scansWrapper wrappers.ScansWrapper, uploadsWrapper wrappers.
7171 createScanCmd .PersistentFlags ().StringP (sourceDirFilterFlag , sourceDirFilterFlagSh , "" ,
7272 "Source file filtering pattern" )
7373 createScanCmd .PersistentFlags ().String (projectName , "" , "Name of the project" )
74- createScanCmd .PersistentFlags ().String (incremental , "" , "Indicates if incremental scan should be performed, defaults to false." )
74+ createScanCmd .PersistentFlags ().String (incrementalSast , "" , "Incremental SAST scan should be performed, defaults to false." )
75+ createScanCmd .PersistentFlags ().String (incrementalKics , "" , "Incremental KICS scan should be performed, defaults to false." )
76+ createScanCmd .PersistentFlags ().String (incrementalSca , "" , "Incremental SCA scan should be performed, defaults to false." )
7577 createScanCmd .PersistentFlags ().String (presetName , "" , "The name of the Checkmarx preset to use." )
7678 createScanCmd .PersistentFlags ().String (projectType , "" , "Type of project: sast" )
7779
@@ -162,9 +164,6 @@ func createProject(projectName string) (string, error) {
162164func updateScanRequestValues (input * []byte , cmd * cobra.Command , sourceType string ) {
163165 var info map [string ]interface {}
164166 newProjectName , _ := cmd .Flags ().GetString (projectName )
165- newProjectType , _ := cmd .Flags ().GetString (projectType )
166- newIncremental , _ := cmd .Flags ().GetString (incremental )
167- newPresetName , _ := cmd .Flags ().GetString (presetName )
168167 _ = json .Unmarshal (* input , & info )
169168 info ["type" ] = sourceType
170169 // Handle the project settings
@@ -180,26 +179,103 @@ func updateScanRequestValues(input *[]byte, cmd *cobra.Command, sourceType strin
180179 projectID := findProject (info ["project" ].(map [string ]interface {})["id" ].(string ))
181180 info ["project" ].(map [string ]interface {})["id" ] = projectID
182181 // Handle the scan configuration
182+ var configArr []interface {}
183183 if _ , ok := info ["config" ]; ! ok {
184- var configArr []interface {}
185- _ = json .Unmarshal ([]byte ("[{}]" ), & configArr )
186- info ["config" ] = configArr
184+ _ = json .Unmarshal ([]byte ("[]" ), & configArr )
185+ }
186+ var sastConfig map [string ]interface {} = addSastScan (cmd )
187+ if sastConfig != nil {
188+ configArr = append (configArr , sastConfig )
187189 }
188- if newProjectType != "" {
189- info ["config" ].([]interface {})[0 ].(map [string ]interface {})["type" ] = newProjectType
190+ var kicsConfig map [string ]interface {} = addKicsScan (cmd )
191+ if kicsConfig != nil {
192+ configArr = append (configArr , kicsConfig )
190193 }
191- if info ["config" ].([]interface {})[0 ].(map [string ]interface {})["value" ] == nil {
194+ var scaConfig map [string ]interface {} = addScaScan (cmd )
195+ if scaConfig != nil {
196+ configArr = append (configArr , scaConfig )
197+ }
198+ info ["config" ] = configArr
199+ * input , _ = json .Marshal (info )
200+ }
201+
202+ func scanTypeEnabled (cmd * cobra.Command , scanType string ) bool {
203+ newProjectType , _ := cmd .Flags ().GetString (projectType )
204+ scanTypes := strings .Split (newProjectType , "," )
205+ for _ , a := range scanTypes {
206+ if strings .EqualFold (a , scanType ) {
207+ return true
208+ }
209+ }
210+ return false
211+ }
212+
213+ func addSastScan (cmd * cobra.Command ) map [string ]interface {} {
214+ if scanTypeEnabled (cmd , "sast" ) {
215+ var objArr map [string ]interface {}
216+ _ = json .Unmarshal ([]byte ("{}" ), & objArr )
217+ newIncremental , _ := cmd .Flags ().GetString (incrementalSast )
218+ newPresetName , _ := cmd .Flags ().GetString (presetName )
219+ objArr ["type" ] = "sast"
192220 var valueMap map [string ]interface {}
193221 _ = json .Unmarshal ([]byte ("{}" ), & valueMap )
194- info ["config" ].([]interface {})[0 ].(map [string ]interface {})["value" ] = valueMap
222+ foundValue := false
223+ if newIncremental != "" {
224+ foundValue = true
225+ valueMap ["incremental" ] = newIncremental
226+ }
227+ if newPresetName != "" {
228+ foundValue = true
229+ valueMap ["presetName" ] = newPresetName
230+ }
231+ if foundValue {
232+ objArr ["value" ] = valueMap
233+ }
234+ return objArr
195235 }
196- if newIncremental != "" {
197- info ["config" ].([]interface {})[0 ].(map [string ]interface {})["value" ].(map [string ]interface {})["incremental" ] = newIncremental
236+ return nil
237+ }
238+
239+ func addKicsScan (cmd * cobra.Command ) map [string ]interface {} {
240+ if scanTypeEnabled (cmd , "kics" ) {
241+ var objArr map [string ]interface {}
242+ _ = json .Unmarshal ([]byte ("{}" ), & objArr )
243+ newIncremental , _ := cmd .Flags ().GetString (incrementalKics )
244+ objArr ["type" ] = "kics"
245+ var valueMap map [string ]interface {}
246+ _ = json .Unmarshal ([]byte ("{}" ), & valueMap )
247+ foundValue := false
248+ if newIncremental != "" {
249+ foundValue = true
250+ valueMap ["incremental" ] = newIncremental
251+ }
252+ if foundValue {
253+ objArr ["value" ] = valueMap
254+ }
255+ return objArr
198256 }
199- if newPresetName != "" {
200- info ["config" ].([]interface {})[0 ].(map [string ]interface {})["value" ].(map [string ]interface {})["presetName" ] = newPresetName
257+ return nil
258+ }
259+
260+ func addScaScan (cmd * cobra.Command ) map [string ]interface {} {
261+ if scanTypeEnabled (cmd , "sca" ) {
262+ var objArr map [string ]interface {}
263+ _ = json .Unmarshal ([]byte ("{}" ), & objArr )
264+ newIncremental , _ := cmd .Flags ().GetString (incrementalSca )
265+ objArr ["type" ] = "sca"
266+ var valueMap map [string ]interface {}
267+ _ = json .Unmarshal ([]byte ("{}" ), & valueMap )
268+ foundValue := false
269+ if newIncremental != "" {
270+ foundValue = true
271+ valueMap ["incremental" ] = newIncremental
272+ }
273+ if foundValue {
274+ objArr ["value" ] = valueMap
275+ }
276+ return objArr
201277 }
202- * input , _ = json . Marshal ( info )
278+ return nil
203279}
204280
205281func compressFolder (sourceDir , filter string ) (string , error ) {
0 commit comments