Skip to content

Commit 5ca3c54

Browse files
- Added changes as per review comments
1 parent 43ed51f commit 5ca3c54

10 files changed

Lines changed: 41 additions & 38 deletions

File tree

internal/commands/asca/asca-engine.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package asca
22

33
import (
4+
"github.com/checkmarx/ast-cli/internal/wrappers/utils"
45
"strings"
56

67
"github.com/checkmarx/ast-cli/internal/commands/util/printer"
78
commonParams "github.com/checkmarx/ast-cli/internal/params"
89
"github.com/checkmarx/ast-cli/internal/services"
910
"github.com/checkmarx/ast-cli/internal/wrappers"
1011
"github.com/checkmarx/ast-cli/internal/wrappers/grpcs"
11-
"github.com/checkmarx/ast-cli/internal/wrappers/utils"
1212
"github.com/pkg/errors"
1313
"github.com/spf13/cobra"
1414
"github.com/spf13/viper"
@@ -30,7 +30,7 @@ func RunScanASCACommand(jwtWrapper wrappers.JWTWrapper) func(cmd *cobra.Command,
3030
return err
3131
}
3232

33-
vorpal := strings.TrimSpace(viper.GetString(commonParams.VorpalCustomPathKey))
33+
vorpal := strings.TrimSpace(viper.GetString(commonParams.ASCALocationKey))
3434
if vorpal != "" {
3535
vorpalLocation = vorpal
3636
} else if location := utils.GetOptionalParam(ascaLocationParam); location != "" {
@@ -44,12 +44,14 @@ func RunScanASCACommand(jwtWrapper wrappers.JWTWrapper) func(cmd *cobra.Command,
4444
ASCAUpdateVersion: ASCALatestVersion,
4545
IsDefaultAgent: agent == commonParams.DefaultAgent,
4646
IgnoredFilePath: ignoredFilePathFlag,
47+
VorpalLocation: vorpalLocation,
4748
}
49+
4850
wrapperParams := services.AscaWrappersParam{
4951
JwtWrapper: jwtWrapper,
5052
ASCAWrapper: ASCAWrapper,
5153
}
52-
scanResult, err := services.CreateASCAScanRequest(ASCAParams, wrapperParams, vorpalLocation)
54+
scanResult, err := services.CreateASCAScanRequest(ASCAParams, wrapperParams)
5355
if err != nil {
5456
return err
5557
}

internal/commands/root.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,10 @@ func extractOptionalFlags(cmd *cobra.Command) error {
461461
if len(keyVal) != params.KeyValuePairSize {
462462
return errors.New("Invalid optional flags. Optional flags should be in a KEY1=VALUE1;KEY2=VALUE2 format")
463463
}
464-
utils.SetOptionalParam(keyVal[0], keyVal[1])
464+
err := utils.SetOptionalParam(keyVal[0], keyVal[1])
465+
if err != nil {
466+
return err
467+
}
465468
}
466469
return nil
467470
}

internal/commands/scan.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,8 @@ func scanASCASubCommand(jwtWrapper wrappers.JWTWrapper, featureFlagsWrapper wrap
482482
)
483483

484484
scanASCACmd.PersistentFlags().String(commonParams.IgnoredFilePathFlag, "", "Path to ignored secrets file")
485-
scanASCACmd.PersistentFlags().String(commonParams.ASCALocationFlag, "", "Path to custom location where ASCA is installed")
486-
_ = viper.BindPFlag(commonParams.VorpalCustomPathKey, scanASCACmd.PersistentFlags().Lookup(commonParams.ASCALocationFlag))
485+
scanASCACmd.PersistentFlags().String(commonParams.ASCALocationFlag, "", "Path to custom location where ASCA engine is installed")
486+
_ = viper.BindPFlag(commonParams.ASCALocationKey, scanASCACmd.PersistentFlags().Lookup(commonParams.ASCALocationFlag))
487487

488488
return scanASCACmd
489489
}

internal/params/binds.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,6 @@ var EnvVarsBinds = []struct {
8787
{CompleteMultiPartUploadPathKey, CompleteMultipartUploadPathEnv, "api/uploads/complete-multipart-upload"},
8888
{MultipartFileSizeKey, MultipartFileSizeEnv, "2"},
8989
{DisableASCALatestVersionKey, DisableASCALatestVersionEnv, ""},
90-
{VorpalCustomPathKey, VorpalPathEnv, ""},
90+
{ASCALocationKey, ASCALocationEnv, ""},
9191
{OptionalFlagsKey, OptionalFlagsEnv, ""},
9292
}

internal/params/envs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,6 @@ const (
9090
CompleteMultipartUploadPathEnv = "CX_COMPLETE_MULTIPART_UPLOAD_PATH"
9191
MultipartFileSizeEnv = "MULTIPART_FILE_SIZE"
9292
DisableASCALatestVersionEnv = "DISABLE_ASCA_UPDATE"
93-
VorpalPathEnv = "CX_ASCA_PATH"
93+
ASCALocationEnv = "CX_ASCA_LOCATION"
9494
OptionalFlagsEnv = "CX_OPTIONAL_FLAGS"
9595
)

internal/params/flags.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const (
6868
BaseURIFlag = "base-uri"
6969
ProxyFlag = "proxy"
7070
ProxyFlagUsage = "Proxy server to send communication through"
71-
OptionalFlagUsage = "Flag for adding optional global configurations"
71+
OptionalFlagUsage = "Flag for providing command specific flag from IDE or CI/CD plugins."
7272
IgnoreProxyFlag = "ignore-proxy"
7373
IgnoreProxyFlagUsage = "Ignore proxy configuration"
7474
ProxyTypeFlag = "proxy-auth-type"

internal/params/keys.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,6 @@ var (
8989
CompleteMultiPartUploadPathKey = strings.ToLower(CompleteMultipartUploadPathEnv)
9090
MultipartFileSizeKey = strings.ToLower(MultipartFileSizeEnv)
9191
DisableASCALatestVersionKey = strings.ToLower(DisableASCALatestVersionEnv)
92-
VorpalCustomPathKey = strings.ToLower(VorpalPathEnv)
92+
ASCALocationKey = strings.ToLower(ASCALocationEnv)
9393
OptionalFlagsKey = strings.ToLower(OptionalFlagsEnv)
9494
)

internal/services/asca.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type AscaScanParams struct {
3333
ASCAUpdateVersion bool
3434
IsDefaultAgent bool
3535
IgnoredFilePath string
36+
VorpalLocation string
3637
}
3738

3839
type AscaWrappersParam struct {
@@ -59,24 +60,24 @@ func validateVorpalDirExist(dirPath string) error {
5960

6061
func ValidateCustomASCAInstallation(vorpalLocation string) error {
6162
if err := validateVorpalDirExist(vorpalLocation); err != nil {
62-
return errors.Wrap(err, "Failed to validate ASCA location")
63+
return errors.Wrap(err, "Failed to validate ASCA custom location")
6364
}
64-
ascaconfig.Params.SetVorpalCustomPath(vorpalLocation)
65-
ASCAInstalled, _ := osinstaller.FileExists(ascaconfig.Params.ExecutableFilePath())
65+
ASCAInstalled, _ := osinstaller.FileExists(filepath.Join(vorpalLocation, ascaconfig.Params.ExecutableFile))
6666
if !ASCAInstalled {
6767
return errors.Errorf("No ASCA executable found in provided location: %s", vorpalLocation)
6868
}
69+
logger.PrintIfVerbose("Using custom ASCA engine installed at: " + vorpalLocation)
6970
return nil
7071
}
7172

72-
func CreateASCAScanRequest(ascaParams AscaScanParams, wrapperParams AscaWrappersParam, vorpalLocation string) (*grpcs.ScanResult, error) {
73+
func CreateASCAScanRequest(ascaParams AscaScanParams, wrapperParams AscaWrappersParam) (*grpcs.ScanResult, error) {
7374
var err error
74-
if vorpalLocation == "" {
75+
if ascaParams.VorpalLocation == "" {
7576
err = manageASCAInstallation(ascaParams, wrapperParams)
7677
if err != nil {
7778
return nil, err
7879
}
79-
} else if err := ValidateCustomASCAInstallation(vorpalLocation); err != nil {
80+
} else if err := ValidateCustomASCAInstallation(ascaParams.VorpalLocation); err != nil {
8081
return nil, err
8182
}
8283
err = ensureASCAServiceRunning(wrapperParams, ascaParams)
@@ -254,7 +255,7 @@ func ensureASCAServiceRunning(wrappersParam AscaWrappersParam, ascaParams AscaSc
254255
if err != nil {
255256
return err
256257
}
257-
if err := RunASCAEngine(wrappersParam.ASCAWrapper.GetPort()); err != nil {
258+
if err := RunASCAEngine(wrappersParam.ASCAWrapper.GetPort(), ascaParams.VorpalLocation); err != nil {
258259
return err
259260
}
260261

@@ -281,16 +282,21 @@ func readSourceCode(filePath string) (string, error) {
281282
return string(data), nil
282283
}
283284

284-
func RunASCAEngine(port int) error {
285+
func RunASCAEngine(port int, vorpalLocation string) error {
285286
dialTimeout := 5 * time.Second
286287
args := []string{
287288
"-listen",
288289
fmt.Sprintf("%d", port),
289290
}
290291

291292
logger.PrintIfVerbose(fmt.Sprintf("Running ASCA engine with args: %v \n", args))
293+
var cmd *exec.Cmd
292294

293-
cmd := exec.Command(ascaconfig.Params.ExecutableFilePath(), args...)
295+
if vorpalLocation != "" {
296+
cmd = exec.Command(filepath.Join(vorpalLocation, ascaconfig.Params.ExecutableFile), args...)
297+
} else {
298+
cmd = exec.Command(ascaconfig.Params.ExecutableFilePath(), args...)
299+
}
294300

295301
osinstaller.ConfigureIndependentProcess(cmd)
296302

internal/services/osinstaller/os-installer-structs.go

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,18 @@ package osinstaller
33
import (
44
"os"
55
"path/filepath"
6-
7-
"github.com/checkmarx/ast-cli/internal/logger"
86
)
97

108
type InstallationConfiguration struct {
11-
ExecutableFile string
12-
DownloadURL string
13-
HashDownloadURL string
14-
FileName string
15-
HashFileName string
16-
WorkingDirName string
17-
VorpalCustomPath string
18-
}
19-
20-
func (i *InstallationConfiguration) SetVorpalCustomPath(path string) {
21-
i.VorpalCustomPath = path
9+
ExecutableFile string
10+
DownloadURL string
11+
HashDownloadURL string
12+
FileName string
13+
HashFileName string
14+
WorkingDirName string
2215
}
2316

2417
func (i *InstallationConfiguration) ExecutableFilePath() string {
25-
if i.VorpalCustomPath != "" && i.WorkingDirName == "CxVorpal" {
26-
logger.PrintfIfVerbose("Using custom ASCA path: %s", i.VorpalCustomPath)
27-
return filepath.Join(i.VorpalCustomPath, i.ExecutableFile)
28-
}
29-
3018
basePath := os.TempDir()
3119
homeDir, err := os.UserHomeDir()
3220
if err == nil {

internal/wrappers/utils/utils.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package utils
22

33
import (
4+
"errors"
45
"net/url"
56
"path"
67
"strings"
@@ -44,15 +45,18 @@ func LimitSlice[T any](slice []T, limit int) []T {
4445
return slice[:limit]
4546
}
4647

47-
func SetOptionalParam(key, value string) {
48+
func SetOptionalParam(key, value string) error {
4849
logger.PrintfIfVerbose("Setting optional parameter: %s", key)
4950
mutex.Lock()
5051
defer mutex.Unlock()
5152
value = strings.TrimSpace(value)
5253
key = strings.TrimSpace(key)
5354
if _, ok := allowedOptionalKeys[key]; ok {
5455
optionalParams[key] = value
56+
} else {
57+
return errors.New("Invalid optional parameter key: " + key)
5558
}
59+
return nil
5660
}
5761

5862
func hasOptionalParam(key string) bool {

0 commit comments

Comments
 (0)