Skip to content

Commit

Permalink
interval as flag in listing commands
Browse files Browse the repository at this point in the history
and fix help text styling for interval
  • Loading branch information
Ewelina Wilkosz committed Mar 10, 2023
1 parent b394aa1 commit b10540c
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 37 deletions.
25 changes: 12 additions & 13 deletions cmd/kosli/listSnapshots.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ const listSnapshotsLongDesc = listSnapshotsShortDesc + `
The results are paginated and ordered from latests to oldest.
By default, the page limit is 15 snapshots per page.
You can optionally specify an INTERVAL between two snapshot expressions with <expression>..<expression>.
You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression].
Expressions can be:
~N N'th behind the latest snapshot
N snapshot number N
NOW the latest snapshot
* ~N N'th behind the latest snapshot
* N snapshot number N
* NOW the latest snapshot
Either expression can be omitted to default to NOW.
`

Expand All @@ -50,17 +52,18 @@ kosli list snapshots yourEnvironmentName \

type listSnapshotsOptions struct {
listOptions
reverse bool
reverse bool
interval string
}

func newListSnapshotsCmd(out io.Writer) *cobra.Command {
o := new(listSnapshotsOptions)
cmd := &cobra.Command{
Use: "snapshots ENV_NAME [INTERVAL]",
Use: "snapshots ENV_NAME",
Short: listSnapshotsShortDesc,
Long: listSnapshotsLongDesc,
Example: listSnapshotsExample,
Args: cobra.MatchAll(cobra.MaximumNArgs(2), cobra.MinimumNArgs(1)),
Args: cobra.ExactArgs(1),
PreRunE: func(cmd *cobra.Command, args []string) error {
err := RequireGlobalFlags(global, []string{"Owner", "ApiToken"})
if err != nil {
Expand All @@ -74,6 +77,7 @@ func newListSnapshotsCmd(out io.Writer) *cobra.Command {
},
}

cmd.Flags().StringVarP(&o.interval, "interval", "i", "", intervalFlag)
addListFlags(cmd, &o.listOptions)
cmd.Flags().BoolVar(&o.reverse, "reverse", false, reverseFlag)

Expand All @@ -82,12 +86,7 @@ func newListSnapshotsCmd(out io.Writer) *cobra.Command {

func (o *listSnapshotsOptions) run(out io.Writer, args []string) error {
envName := args[0]
interval := ""
if len(args) > 1 {
interval = args[1]
}

return o.getSnapshotsList(out, envName, interval)
return o.getSnapshotsList(out, envName, o.interval)

}

Expand Down
12 changes: 6 additions & 6 deletions cmd/kosli/listSnapshots_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ func (suite *ListSnapshotsCommandTestSuite) TestListSnapshotsCmd() {
{
wantError: true,
name: "listing snapshots fails when 3 args are provided",
cmd: fmt.Sprintf(`list snapshots %s arg2 arg3 %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
golden: "Error: accepts at most 2 arg(s), received 3\n",
cmd: fmt.Sprintf(`list snapshots %s arg2 %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
golden: "Error: accepts 1 arg(s), received 2\n",
},
{
wantError: true,
name: "listing snapshots fails when no args are provided",
cmd: fmt.Sprintf(`list snapshots %s`, suite.defaultKosliArguments),
golden: "Error: requires at least 1 arg(s), only received 0\n",
golden: "Error: accepts 1 arg(s), received 0\n",
},
{
name: "listing snapshots works when env is empty",
Expand All @@ -90,21 +90,21 @@ func (suite *ListSnapshotsCommandTestSuite) TestListSnapshotsCmd() {
},
{
name: "listing snapshots works when env contains snapshots and NOW is provided as interval",
cmd: fmt.Sprintf(`list snapshots %s NOW %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`list snapshots %s --interval NOW %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
},
{
name: "listing snapshots works when env contains snapshots and 1..2 is provided as interval",
cmd: fmt.Sprintf(`list snapshots %s 1..2 %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`list snapshots %s --interval 1..2 %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
},
{
name: "listing snapshots in interval 1..2 with --reverse works",
cmd: fmt.Sprintf(`list snapshots %s 1..2 --reverse %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`list snapshots %s --interval 1..2 --reverse %s`, suite.snapshotsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
Expand Down
22 changes: 11 additions & 11 deletions cmd/kosli/logEnvironment.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ const logEnvironmentLongDesc = logEnvironmentShortDesc + `
The results are paginated and ordered from latests to oldest.
By default, the page limit is 15 events per page.
You can optionally specify an INTERVAL between two snapshot expressions with <expression>..<expression>.
You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression].
Expressions can be:
~N N'th behind the latest snapshot
N snapshot number N
NOW the latest snapshot
* ~N N'th behind the latest snapshot
* N snapshot number N
* NOW the latest snapshot
Either expression can be omitted to default to NOW.
`

Expand All @@ -47,7 +49,8 @@ kosli log environment yourEnvironmentName \

type logEnvironmentOptions struct {
listOptions
reverse bool
reverse bool
interval string
}

func newLogEnvironmentCmd(out io.Writer) *cobra.Command {
Expand All @@ -58,7 +61,7 @@ func newLogEnvironmentCmd(out io.Writer) *cobra.Command {
Short: logEnvironmentShortDesc,
Long: logEnvironmentLongDesc,
Example: logEnvironmentExample,
Args: cobra.MatchAll(cobra.MaximumNArgs(2), cobra.MinimumNArgs(1)),
Args: cobra.ExactArgs(1),
PreRunE: func(cmd *cobra.Command, args []string) error {
err := RequireGlobalFlags(global, []string{"Owner", "ApiToken"})
if err != nil {
Expand All @@ -72,6 +75,7 @@ func newLogEnvironmentCmd(out io.Writer) *cobra.Command {
},
}

cmd.Flags().StringVarP(&o.interval, "interval", "i", "", intervalFlag)
addListFlags(cmd, &o.listOptions)
cmd.Flags().BoolVar(&o.reverse, "reverse", false, reverseFlag)

Expand All @@ -80,12 +84,8 @@ func newLogEnvironmentCmd(out io.Writer) *cobra.Command {

func (o *logEnvironmentOptions) run(out io.Writer, args []string) error {
envName := args[0]
interval := ""
if len(args) > 1 {
interval = args[1]
}

return o.getEnvironmentEvents(out, envName, interval)
return o.getEnvironmentEvents(out, envName, o.interval)

}

Expand Down
14 changes: 7 additions & 7 deletions cmd/kosli/logEnvironment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ func (suite *LogEnvironmentCommandTestSuite) TestLogEnvironmentCmd() {
},
{
wantError: true,
name: "listing events fails when 3 args are provided",
cmd: fmt.Sprintf(`log env %s arg2 arg3 %s`, suite.eventsEnvName, suite.defaultKosliArguments),
golden: "Error: accepts at most 2 arg(s), received 3\n",
name: "listing events fails when 2 args are provided",
cmd: fmt.Sprintf(`log env %s arg2 %s`, suite.eventsEnvName, suite.defaultKosliArguments),
golden: "Error: accepts 1 arg(s), received 2\n",
},
{
wantError: true,
name: "listing events fails when no args are provided",
cmd: fmt.Sprintf(`log env %s`, suite.defaultKosliArguments),
golden: "Error: requires at least 1 arg(s), only received 0\n",
golden: "Error: accepts 1 arg(s), received 0\n",
},
{
name: "listing events works when env is empty",
Expand All @@ -86,21 +86,21 @@ func (suite *LogEnvironmentCommandTestSuite) TestLogEnvironmentCmd() {
},
{
name: "listing events works when env contains snapshots and NOW is provided as interval",
cmd: fmt.Sprintf(`log env %s NOW %s`, suite.eventsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`log env %s --interval NOW %s`, suite.eventsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
},
{
name: "listing events works when env contains snapshots and 1..2 is provided as interval",
cmd: fmt.Sprintf(`log env %s 1..2 %s`, suite.eventsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`log env %s --interval 1..2 %s`, suite.eventsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
},
{
name: "listing events in interval 1..2 with --reverse works",
cmd: fmt.Sprintf(`log env %s 1..2 --reverse %s`, suite.eventsEnvName, suite.defaultKosliArguments),
cmd: fmt.Sprintf(`log env %s --interval 1..2 --reverse %s`, suite.eventsEnvName, suite.defaultKosliArguments),
additionalConfig: listSnapshotsTestConfig{
reportToEnv: true,
},
Expand Down
1 change: 1 addition & 0 deletions cmd/kosli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu
fingerprintFlag = "[conditional] The SHA256 fingerprint of the artifact. Only required if you don't specify '--artifact-type'."
evidenceCommitFlag = "The git commit SHA1 for which the evidence belongs. (defaulted in some CIs: https://docs.kosli.com/ci-defaults )."
pipelinesFlag = "The comma separated list of pipelines for which a commit evidence belongs."
intervalFlag = "[optional] expression to define specified snapshots range"
)

var global *GlobalOpts
Expand Down

0 comments on commit b10540c

Please sign in to comment.