Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 30 additions & 25 deletions cliv2/cmd/cliv2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,19 @@ import (
"github.com/snyk/cli-extension-mcp-scan/pkg/mcpscan"
"github.com/snyk/cli-extension-os-flows/pkg/osflows"
"github.com/snyk/cli-extension-sbom/pkg/sbom"
"github.com/snyk/cli-extension-secrets/pkg/secrets"
"github.com/snyk/cli/cliv2/cmd/cliv2/behavior/legacy"
"github.com/snyk/cli/cliv2/internal/cliv2"
"github.com/snyk/cli/cliv2/internal/constants"
"github.com/snyk/container-cli/pkg/container"
"github.com/snyk/error-catalog-golang-public/cli"
"github.com/spf13/cobra"
"github.com/spf13/pflag"

"github.com/snyk/go-application-framework/pkg/analytics"
"github.com/snyk/go-application-framework/pkg/app"
"github.com/snyk/go-application-framework/pkg/configuration"
"github.com/snyk/go-application-framework/pkg/instrumentation"
"github.com/snyk/go-application-framework/pkg/logging"

"github.com/snyk/cli/cliv2/cmd/cliv2/behavior/legacy"
"github.com/snyk/cli/cliv2/internal/cliv2"
"github.com/snyk/cli/cliv2/internal/constants"
"github.com/spf13/cobra"
"github.com/spf13/pflag"

cliv2utils "github.com/snyk/cli/cliv2/internal/utils"

Expand All @@ -47,7 +46,6 @@ import (
"github.com/snyk/go-application-framework/pkg/local_workflows/network_utils"

workflows "github.com/snyk/go-application-framework/pkg/local_workflows/connectivity_check_extension"

"github.com/snyk/go-httpauth/pkg/httpauth"
"github.com/snyk/snyk-iac-capture/pkg/capture"

Expand All @@ -60,7 +58,6 @@ import (
"github.com/snyk/go-application-framework/pkg/workflow"

snykls "github.com/snyk/snyk-ls/ls_extension"

"github.com/snyk/studio-mcp/pkg/mcp"

cli_errors "github.com/snyk/cli/cliv2/internal/errors"
Expand Down Expand Up @@ -483,6 +480,29 @@ func displayError(err error, userInterface ui.UserInterface, config configuratio
}
}

func initExtensions(engine workflow.Engine, config configuration.Configuration) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got the cyclo complexity > 15, so I extracted it into a func, but I can also just silent it.

engine.AddExtensionInitializer(basic_workflows.Init)
engine.AddExtensionInitializer(osflows.Init)
engine.AddExtensionInitializer(iac.Init)
engine.AddExtensionInitializer(sbom.Init)
engine.AddExtensionInitializer(aibom.Init)
engine.AddExtensionInitializer(redteam.Init)
engine.AddExtensionInitializer(depgraph.Init)
engine.AddExtensionInitializer(capture.Init)
engine.AddExtensionInitializer(iacrules.Init)
engine.AddExtensionInitializer(snykls.Init)
engine.AddExtensionInitializer(mcp.Init)
engine.AddExtensionInitializer(container.Init)
engine.AddExtensionInitializer(workflows.InitConnectivityCheckWorkflow)
engine.AddExtensionInitializer(localworkflows.InitCodeWorkflow)
engine.AddExtensionInitializer(ignoreworkflow.InitIgnoreWorkflows)
engine.AddExtensionInitializer(mcpscan.Init)

if config.GetBool(configuration.PREVIEW_FEATURES_ENABLED) {
engine.AddExtensionInitializer(secrets.Init)
}
}

func MainWithErrorCode() int {
initDebugBuild()

Expand Down Expand Up @@ -550,22 +570,7 @@ func MainWithErrorCode() int {
}

// initialize the extensions -> they register themselves at the engine
globalEngine.AddExtensionInitializer(basic_workflows.Init)
globalEngine.AddExtensionInitializer(osflows.Init)
globalEngine.AddExtensionInitializer(iac.Init)
globalEngine.AddExtensionInitializer(sbom.Init)
globalEngine.AddExtensionInitializer(aibom.Init)
globalEngine.AddExtensionInitializer(redteam.Init)
globalEngine.AddExtensionInitializer(depgraph.Init)
globalEngine.AddExtensionInitializer(capture.Init)
globalEngine.AddExtensionInitializer(iacrules.Init)
globalEngine.AddExtensionInitializer(snykls.Init)
globalEngine.AddExtensionInitializer(mcp.Init)
globalEngine.AddExtensionInitializer(container.Init)
globalEngine.AddExtensionInitializer(workflows.InitConnectivityCheckWorkflow)
globalEngine.AddExtensionInitializer(localworkflows.InitCodeWorkflow)
globalEngine.AddExtensionInitializer(ignoreworkflow.InitIgnoreWorkflows)
globalEngine.AddExtensionInitializer(mcpscan.Init)
initExtensions(globalEngine, globalConfiguration)

// init engine
err = globalEngine.Init()
Expand Down
45 changes: 26 additions & 19 deletions cliv2/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.24.4
require (
github.com/elazarl/goproxy v1.7.2
github.com/elazarl/goproxy/ext v0.0.0-20230808193330-2592e75ae04a
github.com/gofrs/flock v0.12.1
github.com/gofrs/flock v0.13.0
github.com/golang/mock v1.6.0
github.com/google/uuid v1.6.0
github.com/pkg/errors v0.9.1
Expand All @@ -17,6 +17,7 @@ require (
github.com/snyk/cli-extension-mcp-scan v0.0.0-20260120142932-0eea0566625a
github.com/snyk/cli-extension-os-flows v0.0.0-20260115160519-84f621016a34
github.com/snyk/cli-extension-sbom v0.0.0-20260109124810-cfdd074f8eeb
github.com/snyk/cli-extension-secrets v0.0.0-20260119125200-a69877b835d2
github.com/snyk/container-cli v0.0.0-20250321132345-1e2e01681dd7
github.com/snyk/error-catalog-golang-public v0.0.0-20260108110943-21ad0c940c14
github.com/snyk/go-application-framework v0.0.0-20260119153851-af9399a70578
Expand All @@ -39,18 +40,18 @@ require (
cloud.google.com/go/iam v1.5.3 // indirect
cloud.google.com/go/monitoring v1.24.3 // indirect
cloud.google.com/go/storage v1.59.0 // indirect
dario.cat/mergo v1.0.1 // indirect
dario.cat/mergo v1.0.2 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/OneOfOne/xxhash v1.2.8 // indirect
github.com/ProtonMail/go-crypto v1.2.0 // indirect
github.com/ProtonMail/go-crypto v1.3.0 // indirect
github.com/adrg/strutil v0.3.1 // indirect
github.com/adrg/xdg v0.5.3 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/agnivade/levenshtein v1.2.0 // indirect
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa // indirect
github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e // indirect
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
github.com/apparentlymart/go-cidr v1.1.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
Expand Down Expand Up @@ -80,22 +81,25 @@ require (
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bmatcuk/doublestar v1.3.4 // indirect
github.com/bmatcuk/doublestar/v4 v4.6.0 // indirect
github.com/cenkalti/backoff/v5 v5.0.2 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charmbracelet/bubbles v0.14.0 // indirect
github.com/charmbracelet/bubbletea v0.23.1 // indirect
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
github.com/charmbracelet/colorprofile v0.3.3 // indirect
github.com/charmbracelet/lipgloss v1.1.0 // indirect
github.com/charmbracelet/x/ansi v0.8.0 // indirect
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/charmbracelet/x/ansi v0.11.2 // indirect
github.com/charmbracelet/x/cellbuf v0.0.14 // indirect
github.com/charmbracelet/x/term v0.2.2 // indirect
github.com/chzyer/readline v1.5.1 // indirect
github.com/clipperhouse/displaywidth v0.6.1 // indirect
github.com/clipperhouse/stringish v0.1.1 // indirect
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
github.com/cloudflare/circl v1.6.1 // indirect
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect
github.com/containerd/console v1.0.3 // indirect
github.com/creachadair/jrpc2 v1.3.0 // indirect
github.com/creachadair/mds v0.23.0 // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
github.com/cyphar/filepath-securejoin v0.6.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/denisbrodbeck/machineid v1.0.1 // indirect
github.com/dlclark/regexp2 v1.11.4 // indirect
Expand All @@ -115,8 +119,8 @@ require (
github.com/gertd/go-pluralize v0.2.1 // indirect
github.com/getsentry/sentry-go v0.31.1 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.6.2 // indirect
github.com/go-git/go-git/v5 v5.15.0 // indirect
github.com/go-git/go-billy/v5 v5.7.0 // indirect
github.com/go-git/go-git/v5 v5.16.4 // indirect
github.com/go-ini/ini v1.67.0 // indirect
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
github.com/go-logr/logr v1.4.3 // indirect
Expand Down Expand Up @@ -161,33 +165,34 @@ require (
github.com/jcmturner/goidentity/v6 v6.0.1 // indirect
github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/kevinburke/ssh_config v1.4.0 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mark3labs/mcp-go v0.31.0 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mattn/go-runewidth v0.0.19 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/muesli/ansi v0.0.0-20221106050444-61f0cd9a192a // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.16.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oapi-codegen/runtime v1.1.1 // indirect
github.com/oapi-codegen/runtime v1.1.2 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/open-policy-agent/opa v0.69.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/otiai10/copy v1.14.1 // indirect
github.com/otiai10/mint v1.6.3 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/peterh/liner v1.2.2 // indirect
github.com/pjbgf/sha1cd v0.3.2 // indirect
github.com/pjbgf/sha1cd v0.5.0 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
Expand Down Expand Up @@ -246,7 +251,7 @@ require (
golang.org/x/crypto v0.47.0 // indirect
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
golang.org/x/net v0.48.0 // indirect
golang.org/x/oauth2 v0.33.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.40.0 // indirect
golang.org/x/term v0.39.0 // indirect
Expand Down Expand Up @@ -281,3 +286,5 @@ replace github.com/mattn/go-localereader v0.0.1 => github.com/mattn/go-localerea
// replace github.com/snyk/studio-mcp => ../../studio-mcp

// replace github.com/snyk/cli-extension-mcp-scan => ../../cli-extension-mcp-scan

// replace github.com/snyk/cli-extension-secrets => ../../cli-extension-secrets
Loading