Skip to content

Commit 6a734c5

Browse files
authored
Added debug logging (#286)
* - Added (--debug) mode to CLI. This provides expanded logging information.
1 parent 24881f1 commit 6a734c5

File tree

21 files changed

+472
-369
lines changed

21 files changed

+472
-369
lines changed

cmd/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"log"
45
"os"
56

67
"github.com/checkmarxDev/ast-cli/internal/commands"
@@ -44,6 +45,7 @@ func main() {
4445

4546
func exitIfError(err error) {
4647
if err != nil {
48+
log.Println(err)
4749
os.Exit(failureExitCode)
4850
}
4951
}

internal/commands/auth.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package commands
22

33
import (
44
"fmt"
5+
"log"
56

67
"github.com/MakeNowJust/heredoc"
78

@@ -58,12 +59,12 @@ func NewAuthCommand(authWrapper wrappers.AuthWrapper) *cobra.Command {
5859
},
5960
RunE: runRegister(authWrapper),
6061
}
61-
createClientCmd.PersistentFlags().StringP(UsernameFlag, UsernameSh, "", "Username for Ast user that privileges to "+
62+
createClientCmd.PersistentFlags().StringP(params.UsernameFlag, params.UsernameSh, "", "Username for Ast user that privileges to "+
6263
"create clients")
63-
createClientCmd.PersistentFlags().StringP(PasswordFlag, PasswordSh, "", "Password for Ast user that privileges to "+
64+
createClientCmd.PersistentFlags().StringP(params.PasswordFlag, params.PasswordSh, "", "Password for Ast user that privileges to "+
6465
"create clients")
65-
createClientCmd.PersistentFlags().StringP(ClientDescriptionFlag, ClientDescriptionSh, "", "A client description")
66-
createClientCmd.PersistentFlags().StringSliceP(ClientRolesFlag, ClientRolesSh, []string{"ast-admin"},
66+
createClientCmd.PersistentFlags().StringP(params.ClientDescriptionFlag, params.ClientDescriptionSh, "", "A client description")
67+
createClientCmd.PersistentFlags().StringSliceP(params.ClientRolesFlag, params.ClientRolesSh, []string{"ast-admin"},
6768
"A list of roles of the client")
6869

6970
validLoginCmd := &cobra.Command{
@@ -97,18 +98,18 @@ func validLogin() func(cmd *cobra.Command, args []string) error {
9798

9899
func runRegister(authWrapper wrappers.AuthWrapper) func(cmd *cobra.Command, args []string) error {
99100
return func(cmd *cobra.Command, args []string) error {
100-
username, _ := cmd.Flags().GetString(UsernameFlag)
101+
username, _ := cmd.Flags().GetString(params.UsernameFlag)
101102
if username == "" {
102-
return errors.Errorf(pleaseProvideFlag, failedCreatingClient, UsernameFlag)
103+
return errors.Errorf(pleaseProvideFlag, failedCreatingClient, params.UsernameFlag)
103104
}
104105

105-
password, _ := cmd.Flags().GetString(PasswordFlag)
106+
password, _ := cmd.Flags().GetString(params.PasswordFlag)
106107
if password == "" {
107-
return errors.Errorf(pleaseProvideFlag, failedCreatingClient, PasswordFlag)
108+
return errors.Errorf(pleaseProvideFlag, failedCreatingClient, params.PasswordFlag)
108109
}
109110

110-
roles, _ := cmd.Flags().GetStringSlice(ClientRolesFlag)
111-
description, _ := cmd.Flags().GetString(ClientDescriptionFlag)
111+
roles, _ := cmd.Flags().GetStringSlice(params.ClientRolesFlag)
112+
description, _ := cmd.Flags().GetString(params.ClientDescriptionFlag)
112113
generatedClientID := "ast-plugins-" + uuid.New().String()
113114
generatedClientSecret := uuid.New().String()
114115
client := &wrappers.Oath2Client{
@@ -120,7 +121,7 @@ func runRegister(authWrapper wrappers.AuthWrapper) func(cmd *cobra.Command, args
120121

121122
errorMsg, err := authWrapper.CreateOauth2Client(client, username, password, adminClientID, adminClientSecret)
122123
if err != nil {
123-
_, _ = fmt.Fprintln(cmd.OutOrStdout(), "Could not create OAuth2 credentials!")
124+
log.Println("Could not create OAuth2 credentials!")
124125
return nil
125126
}
126127

internal/commands/auth_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ func TestAuthNoSub(t *testing.T) {
2222

2323
func TestRunCreateOath2ClientCommand(t *testing.T) {
2424
cmd := createASTTestCommand()
25-
err := executeTestCommand(cmd, "-v", "auth", "register", "--username", "username",
25+
err := executeTestCommand(cmd, "auth", "register", "--username", "username",
2626
"--password", "password")
2727
assert.NilError(t, err)
2828

29-
err = executeTestCommand(cmd, "-v", "auth", "register", "-u", "username",
29+
err = executeTestCommand(cmd, "auth", "register", "-u", "username",
3030
"-p", "password", "--roles", "admin,user")
3131
assert.NilError(t, err)
3232
}
3333

3434
func TestRunCreateOath2ClientCommandInvalid(t *testing.T) {
3535
cmd := createASTTestCommand()
36-
err := executeTestCommand(cmd, "-v", "auth", "register")
36+
err := executeTestCommand(cmd, "auth", "register")
3737
assert.Assert(t, err != nil)
3838
}

internal/commands/project.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ func NewProjectCommand(projectsWrapper wrappers.ProjectsWrapper) *cobra.Command
6464
},
6565
RunE: runCreateProjectCommand(projectsWrapper),
6666
}
67-
createProjCmd.PersistentFlags().String(TagList, "", "List of tags, ex: (tagA,tagB:val,etc)")
68-
createProjCmd.PersistentFlags().String(GroupList, "", "List of groups, ex: (PowerUsers,etc)")
69-
createProjCmd.PersistentFlags().StringP(ProjectName, "", "", "Name of project")
70-
createProjCmd.PersistentFlags().StringP(MainBranchFlag, "", "", "Main branch")
67+
createProjCmd.PersistentFlags().String(commonParams.TagList, "", "List of tags, ex: (tagA,tagB:val,etc)")
68+
createProjCmd.PersistentFlags().String(commonParams.GroupList, "", "List of groups, ex: (PowerUsers,etc)")
69+
createProjCmd.PersistentFlags().StringP(commonParams.ProjectName, "", "", "Name of project")
70+
createProjCmd.PersistentFlags().StringP(commonParams.MainBranchFlag, "", "", "Main branch")
7171

7272
listProjectsCmd := &cobra.Command{
7373
Use: "list",
@@ -82,7 +82,7 @@ func NewProjectCommand(projectsWrapper wrappers.ProjectsWrapper) *cobra.Command
8282
},
8383
RunE: runListProjectsCommand(projectsWrapper),
8484
}
85-
listProjectsCmd.PersistentFlags().StringSlice(FilterFlag, []string{}, filterProjectsListFlagUsage)
85+
listProjectsCmd.PersistentFlags().StringSlice(commonParams.FilterFlag, []string{}, filterProjectsListFlagUsage)
8686

8787
showProjectCmd := &cobra.Command{
8888
Use: "show",
@@ -136,9 +136,9 @@ func NewProjectCommand(projectsWrapper wrappers.ProjectsWrapper) *cobra.Command
136136

137137
func updateProjectRequestValues(input *[]byte, cmd *cobra.Command) error {
138138
var info map[string]interface{}
139-
projectName, _ := cmd.Flags().GetString(ProjectName)
140-
mainBranch, _ := cmd.Flags().GetString(MainBranchFlag)
141-
repoURL, _ := cmd.Flags().GetString(RepoURLFlag)
139+
projectName, _ := cmd.Flags().GetString(commonParams.ProjectName)
140+
mainBranch, _ := cmd.Flags().GetString(commonParams.MainBranchFlag)
141+
repoURL, _ := cmd.Flags().GetString(commonParams.RepoURLFlag)
142142
_ = json.Unmarshal(*input, &info)
143143
if projectName != "" {
144144
info["name"] = projectName
@@ -156,7 +156,7 @@ func updateProjectRequestValues(input *[]byte, cmd *cobra.Command) error {
156156
}
157157

158158
func updateGroupValues(input *[]byte, cmd *cobra.Command) {
159-
groupListStr, _ := cmd.Flags().GetString(GroupList)
159+
groupListStr, _ := cmd.Flags().GetString(commonParams.GroupList)
160160
groups := strings.Split(groupListStr, ",")
161161
var groupMap []string
162162
var info map[string]interface{}
@@ -246,7 +246,7 @@ func runGetProjectByIDCommand(projectsWrapper wrappers.ProjectsWrapper) func(cmd
246246
var projectResponseModel *projectsRESTApi.ProjectResponseModel
247247
var errorModel *projectsRESTApi.ErrorModel
248248
var err error
249-
projectID, _ := cmd.Flags().GetString(ProjectIDFlag)
249+
projectID, _ := cmd.Flags().GetString(commonParams.ProjectIDFlag)
250250
if projectID == "" {
251251
return errors.Errorf("%s: Please provide a project ID", failedGettingProj)
252252
}
@@ -271,7 +271,7 @@ func runDeleteProjectCommand(projectsWrapper wrappers.ProjectsWrapper) func(cmd
271271
return func(cmd *cobra.Command, args []string) error {
272272
var errorModel *projectsRESTApi.ErrorModel
273273
var err error
274-
projectID, _ := cmd.Flags().GetString(ProjectIDFlag)
274+
projectID, _ := cmd.Flags().GetString(commonParams.ProjectIDFlag)
275275
if projectID == "" {
276276
return errors.Errorf("%s: Please provide a project ID", failedDeletingProj)
277277
}

internal/commands/project_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,103 +22,103 @@ func TestProjectNoSub(t *testing.T) {
2222

2323
func TestRunCreateProjectCommandWithFile(t *testing.T) {
2424
cmd := createASTTestCommand()
25-
err := executeTestCommand(cmd, "-v", "project", "create", "--project-name", "test_project")
25+
err := executeTestCommand(cmd, "project", "create", "--project-name", "test_project")
2626
assert.NilError(t, err)
2727
}
2828

2929
func TestRunCreateProjectCommandWithNoInput(t *testing.T) {
3030
cmd := createASTTestCommand()
31-
err := executeTestCommand(cmd, "-v", "project", "create")
31+
err := executeTestCommand(cmd, "project", "create")
3232
assert.Assert(t, err != nil)
3333
assert.Assert(t, err.Error() == "Project name is required")
3434
}
3535

3636
func TestRunCreateProjectCommandWithInvalidFormat(t *testing.T) {
3737
cmd := createASTTestCommand()
38-
err := executeTestCommand(cmd, "--format", "non-sense", "-v", "project", "create", "--project-name", "test_project")
38+
err := executeTestCommand(cmd, "--format", "non-sense", "project", "create", "--project-name", "test_project")
3939
assert.Assert(t, err != nil)
4040
assert.Assert(t, err.Error() == "Failed creating a project: Invalid format non-sense")
4141
}
4242

4343
func TestRunCreateProjectCommandWithInputList(t *testing.T) {
4444
cmd := createASTTestCommand()
45-
err := executeTestCommand(cmd, "--format", "list", "-v", "project", "create", "--project-name", "test_project")
45+
err := executeTestCommand(cmd, "--format", "list", "project", "create", "--project-name", "test_project")
4646
assert.NilError(t, err)
4747
}
4848

4949
func TestRunGetProjectByIdCommandNoScanID(t *testing.T) {
5050
cmd := createASTTestCommand()
51-
err := executeTestCommand(cmd, "-v", "project", "show")
51+
err := executeTestCommand(cmd, "project", "show")
5252
assert.Assert(t, err != nil)
5353
assert.Assert(t, err.Error() == "Failed getting a project: Please provide a project ID")
5454
}
5555

5656
func TestRunGetProjectByIdCommandFlagNonExist(t *testing.T) {
5757
cmd := createASTTestCommand()
58-
err := executeTestCommand(cmd, "-v", "project", "get", "--chibutero")
58+
err := executeTestCommand(cmd, "project", "get", "--chibutero")
5959
assert.Assert(t, err != nil)
6060
assert.Assert(t, err.Error() == unknownFlag)
6161
}
6262

6363
func TestRunGetProjectByIdCommand(t *testing.T) {
6464
cmd := createASTTestCommand()
65-
err := executeTestCommand(cmd, "-v", "project", "show", "--project-id", "MOCK")
65+
err := executeTestCommand(cmd, "project", "show", "--project-id", "MOCK")
6666
assert.NilError(t, err)
6767
}
6868

6969
func TestRunDeleteProjectByIdCommandNoProjectID(t *testing.T) {
7070
cmd := createASTTestCommand()
71-
err := executeTestCommand(cmd, "-v", "project", "delete")
71+
err := executeTestCommand(cmd, "project", "delete")
7272
assert.Assert(t, err != nil)
7373
assert.Assert(t, err.Error() == "Failed deleting a project: Please provide a project ID")
7474
}
7575

7676
func TestRunDeleteProjectByIdCommandFlagNonExist(t *testing.T) {
7777
cmd := createASTTestCommand()
78-
err := executeTestCommand(cmd, "-v", "scan", "project", "--chibutero")
78+
err := executeTestCommand(cmd, "scan", "project", "--chibutero")
7979
assert.Assert(t, err != nil)
8080
assert.Assert(t, err.Error() == unknownFlag)
8181
}
8282

8383
func TestRunDeleteProjectByIdCommand(t *testing.T) {
8484
cmd := createASTTestCommand()
85-
err := executeTestCommand(cmd, "-v", "project", "delete", "--project-id", "MOCK")
85+
err := executeTestCommand(cmd, "project", "delete", "--project-id", "MOCK")
8686
assert.NilError(t, err)
8787
}
8888

8989
func TestRunGetAllProjectsCommand(t *testing.T) {
9090
cmd := createASTTestCommand()
91-
err := executeTestCommand(cmd, "-v", "project", "list")
91+
err := executeTestCommand(cmd, "project", "list")
9292
assert.NilError(t, err)
9393
}
9494

9595
func TestRunGetAllProjectsCommandFlagNonExist(t *testing.T) {
9696
cmd := createASTTestCommand()
97-
err := executeTestCommand(cmd, "-v", "project", "list", "--chibutero")
97+
err := executeTestCommand(cmd, "project", "list", "--chibutero")
9898
assert.Assert(t, err != nil)
9999
assert.Assert(t, err.Error() == unknownFlag)
100100
}
101101

102102
func TestRunGetAllProjectsCommandWithLimit(t *testing.T) {
103103
cmd := createASTTestCommand()
104-
err := executeTestCommand(cmd, "-v", "project", "list", "--filter", "limit=40")
104+
err := executeTestCommand(cmd, "project", "list", "--filter", "limit=40")
105105
assert.NilError(t, err)
106106
}
107107

108108
func TestRunGetAllProjectsCommandWithLimitList(t *testing.T) {
109109
cmd := createASTTestCommand()
110-
err := executeTestCommand(cmd, "-v", "project", "list", "--format", "list", "--filter", "--limit=40")
110+
err := executeTestCommand(cmd, "project", "list", "--format", "list", "--filter", "--limit=40")
111111
assert.NilError(t, err)
112112
}
113113

114114
func TestRunGetAllProjectsCommandWithOffset(t *testing.T) {
115115
cmd := createASTTestCommand()
116-
err := executeTestCommand(cmd, "-v", "project", "list", "--filter", "offset=150")
116+
err := executeTestCommand(cmd, "project", "list", "--filter", "offset=150")
117117
assert.NilError(t, err)
118118
}
119119

120120
func TestRunGetProjectTagsCommand(t *testing.T) {
121121
cmd := createASTTestCommand()
122-
err := executeTestCommand(cmd, "-v", "project", "tags")
122+
err := executeTestCommand(cmd, "project", "tags")
123123
assert.NilError(t, err)
124124
}

internal/commands/result.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package commands
33
import (
44
"encoding/json"
55
"fmt"
6+
"log"
67
"os"
78
"path/filepath"
89
"strings"
@@ -55,9 +56,9 @@ func NewResultCommand(resultsWrapper wrappers.ResultsWrapper, scanWrapper wrappe
5556
}
5657
addScanIDFlag(resultCmd, "ID to report on.")
5758
addResultFormatFlag(resultCmd, util.FormatJSON, util.FormatSummary, util.FormatSummaryConsole, util.FormatSarif)
58-
resultCmd.PersistentFlags().String(TargetFlag, "cx_result", "Output file")
59-
resultCmd.PersistentFlags().String(TargetPathFlag, ".", "Output Path")
60-
resultCmd.PersistentFlags().StringSlice(FilterFlag, []string{}, filterResultsListFlagUsage)
59+
resultCmd.PersistentFlags().String(commonParams.TargetFlag, "cx_result", "Output file")
60+
resultCmd.PersistentFlags().String(commonParams.TargetPathFlag, ".", "Output Path")
61+
resultCmd.PersistentFlags().StringSlice(commonParams.FilterFlag, []string{}, filterResultsListFlagUsage)
6162
return resultCmd
6263
}
6364

@@ -133,7 +134,7 @@ func countResult(summary *wrappers.ResultSummary, result *wrappers.ScanResult) {
133134
}
134135

135136
func writeHTMLSummary(targetFile string, summary *wrappers.ResultSummary) error {
136-
fmt.Println("Creating Summary Report: ", targetFile)
137+
log.Println("Creating Summary Report: ", targetFile)
137138
summaryTemp, err := template.New("summaryTemplate").Parse(wrappers.SummaryTemplate)
138139
if err == nil {
139140
f, err := os.Create(targetFile)
@@ -169,10 +170,10 @@ func runGetResultCommand(
169170
scanWrapper wrappers.ScansWrapper,
170171
) func(cmd *cobra.Command, args []string) error {
171172
return func(cmd *cobra.Command, args []string) error {
172-
targetFile, _ := cmd.Flags().GetString(TargetFlag)
173-
targetPath, _ := cmd.Flags().GetString(TargetPathFlag)
174-
format, _ := cmd.Flags().GetString(TargetFormatFlag)
175-
scanID, _ := cmd.Flags().GetString(ScanIDFlag)
173+
targetFile, _ := cmd.Flags().GetString(commonParams.TargetFlag)
174+
targetPath, _ := cmd.Flags().GetString(commonParams.TargetPathFlag)
175+
format, _ := cmd.Flags().GetString(commonParams.TargetFormatFlag)
176+
scanID, _ := cmd.Flags().GetString(commonParams.ScanIDFlag)
176177
params, err := getFilters(cmd)
177178
if err != nil {
178179
return errors.Wrapf(err, "%s", failedListingResults)
@@ -246,8 +247,8 @@ func createTargetName(targetFile, targetPath, targetType string) string {
246247

247248
func createDirectory(targetPath string) error {
248249
if _, err := os.Stat(targetPath); os.IsNotExist(err) {
249-
fmt.Printf("\nOutput path not found: %s\n", targetPath)
250-
fmt.Printf("Creating directory: %s\n", targetPath)
250+
log.Printf("\nOutput path not found: %s\n", targetPath)
251+
log.Printf("Creating directory: %s\n", targetPath)
251252
err = os.Mkdir(targetPath, permission)
252253
if err != nil {
253254
return err
@@ -279,7 +280,7 @@ func ReadResults(
279280
func exportSarifResults(targetFile string, results *wrappers.ScanResultsCollection) error {
280281
var err error
281282
var resultsJSON []byte
282-
fmt.Println("Creating SARIF Report: ", targetFile)
283+
log.Println("Creating SARIF Report: ", targetFile)
283284
var sarifResults = convertCxResultsToSarif(results)
284285
resultsJSON, err = json.Marshal(sarifResults)
285286
if err != nil {
@@ -297,7 +298,7 @@ func exportSarifResults(targetFile string, results *wrappers.ScanResultsCollecti
297298
func exportJSONResults(targetFile string, results *wrappers.ScanResultsCollection) error {
298299
var err error
299300
var resultsJSON []byte
300-
fmt.Println("Creating JSON Report: ", targetFile)
301+
log.Println("Creating JSON Report: ", targetFile)
301302
resultsJSON, err = json.Marshal(results)
302303
if err != nil {
303304
return errors.Wrapf(err, "%s: failed to serialize results response ", failedGettingAll)

0 commit comments

Comments
 (0)