Skip to content
Merged
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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.idea/
build/
bin
mocks/
mocks/
.ai
1 change: 1 addition & 0 deletions doc/aictl_get.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ Get resources
* [aictl](aictl.md) - Application Inspector ConTroL tool
* [aictl get projects](aictl_get_projects.md) - Get AI projects
* [aictl get scan](aictl_get_scan.md) - Get scan
* [aictl get version](aictl_get_version.md) - Get aie version

28 changes: 28 additions & 0 deletions doc/aictl_get_version.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## aictl get version

Get aie version

```
aictl get version [flags]
```

### Options

```
-h, --help help for version
```

### Options inherited from parent commands

```
-l, --log-path string log file path
--tls-skip Skip certificate verification
-t, --token string AI server access token
-u, --uri string AI server uri
-v, --verbose verbose output
```

### SEE ALSO

* [aictl get](aictl_get.md) - Get resources

Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func (u *UseCase) Execute(ctx context.Context, scanId uuid.UUID, reportType repo

templateId, err := u.aiAdapter.GetDefaultTemplateId(ctx, reportType)
if err != nil {
return err
return fmt.Errorf("get default template id: %w", err)
}

r, err := u.aiAdapter.GetReport(ctx, u.cfg.ProjectId(), scanId, templateId, includeComments, includeDFD, includeGlossary, l10n)
Expand Down
2 changes: 1 addition & 1 deletion internal/core/application/usecase/get/scan/scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func (u *UseCase) Execute(ctx context.Context, scanId uuid.UUID) error {

scanStage, err := u.aiAdapter.GetScan(ctx, u.cfg.ProjectId(), scanId)
if err != nil {
return err
return fmt.Errorf("get scan: %w", err)
}

u.cliAdapter.ShowScans(ctx, []scan.Scan{*scanStage})
Expand Down
2 changes: 1 addition & 1 deletion internal/core/application/usecase/get/scan/state/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func (u *UseCase) Execute(ctx context.Context, scanId uuid.UUID) error {

scanStage, err := u.aiAdapter.GetScanStage(ctx, u.cfg.ProjectId(), scanId)
if err != nil {
return err
return fmt.Errorf("get scan stage: %w", err)
}

u.cliAdapter.ReturnText(ctx, scanStage.Stage)
Expand Down
57 changes: 57 additions & 0 deletions internal/core/application/usecase/get/version/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package version

import (
"context"
"fmt"

"github.com/POSIdev-community/aictl/internal/core/domain/config"
"github.com/POSIdev-community/aictl/internal/core/domain/version"
"github.com/POSIdev-community/aictl/pkg/errs"
)

type AI interface {
InitializeWithRetry(ctx context.Context) error
GetVersion(ctx context.Context) (version.Version, error)
}

type CLI interface {
ReturnText(ctx context.Context, text string)
}

type UseCase struct {
aiAdapter AI
cliAdapter CLI
cfg *config.Config
}

func NewUseCase(aiAdapter AI, cliAdapter CLI, cfg *config.Config) (*UseCase, error) {
if aiAdapter == nil {
return nil, errs.NewValidationRequiredError("aiAdapter")
}

if cliAdapter == nil {
return nil, errs.NewValidationRequiredError("cliAdapter")
}

return &UseCase{
aiAdapter: aiAdapter,
cliAdapter: cliAdapter,
cfg: cfg,
}, nil
}

func (u *UseCase) Execute(ctx context.Context) error {
err := u.aiAdapter.InitializeWithRetry(ctx)
if err != nil {
return fmt.Errorf("initialize with retry: %w", err)
}

v, err := u.aiAdapter.GetVersion(ctx)
if err != nil {
return fmt.Errorf("get version: %w", err)
}

u.cliAdapter.ReturnText(ctx, v.String())

return nil
}
7 changes: 6 additions & 1 deletion internal/di/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/POSIdev-community/aictl/internal/core/application/usecase/get/scan/report"
defaultreport "github.com/POSIdev-community/aictl/internal/core/application/usecase/get/scan/report/defaultreport"
"github.com/POSIdev-community/aictl/internal/core/application/usecase/get/scan/state"
getVersion "github.com/POSIdev-community/aictl/internal/core/application/usecase/get/version"
"github.com/POSIdev-community/aictl/internal/core/application/usecase/scan/await"
startBranch "github.com/POSIdev-community/aictl/internal/core/application/usecase/scan/start/branch"
startProject "github.com/POSIdev-community/aictl/internal/core/application/usecase/scan/start/project"
Expand Down Expand Up @@ -207,7 +208,11 @@ func buildGetCmd(aiAdapter *ai.Adapter, cliAdapter *cli.Adapter, cfg *config.Con

cmdScan := get.NewGetScanCmd(persistentPreRunEGetScanCmd, scanUC, cmdAiproj, cmdLogs, cmdReport, cmdSbom, cmdState)

return get.NewGetCmd(persistentPreRunEGetCmd, cmdProjects, cmdScan), nil
versionUC, err := getVersion.NewUseCase(aiAdapter, cliAdapter, cfg)

cmdVersion := get.NewGetVersionCmd(versionUC)

return get.NewGetCmd(persistentPreRunEGetCmd, cmdProjects, cmdScan, cmdVersion), nil
}

func buildScanCmd(aiAdapter *ai.Adapter, cliAdapter *cli.Adapter, cfg *config.Config) (*scanPresenter.CmdScan, error) {
Expand Down
4 changes: 3 additions & 1 deletion internal/presenter/get/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ func NewPersistentPreRunEGetCmd(cfg *config.Config) PersistentPreRunEGetCmd {
func NewGetCmd(
persistentPreRunE PersistentPreRunEGetCmd,
cmdGetProjects CmdGetProjects,
cmdGetScan CmdGetScan) *CmdGet {
cmdGetScan CmdGetScan,
cmdGetVersion CmdGetVersion) *CmdGet {

cmd := &cobra.Command{
Use: "get",
Expand All @@ -29,6 +30,7 @@ func NewGetCmd(

cmd.AddCommand(cmdGetProjects.Command)
cmd.AddCommand(cmdGetScan.Command)
cmd.AddCommand(cmdGetVersion.Command)

_utils.AddConnectionPersistentFlags(cmd)

Expand Down
36 changes: 36 additions & 0 deletions internal/presenter/get/get_version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package get

import (
"context"
"fmt"

"github.com/spf13/cobra"
)

type CmdGetVersion struct {
*cobra.Command
}

type UseCaseGetVersion interface {
Execute(ctx context.Context) error
}

func NewGetVersionCmd(uc UseCaseGetVersion) CmdGetVersion {
cmd := &cobra.Command{
Use: "version",
Short: "Get aie version",
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()

if err := uc.Execute(ctx); err != nil {
cmd.SilenceUsage = true

return fmt.Errorf("'get version' usecase call: %w", err)
}

return nil
},
}

return CmdGetVersion{cmd}
}