Skip to content

Commit 03ec83b

Browse files
chore: Refactor output method (#564)
1 parent 8d430ef commit 03ec83b

2 files changed

Lines changed: 51 additions & 45 deletions

File tree

pkg/cmd/ephemeralenvironment/deprovision-environment/deprovision_environment.go

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package deprovision_environment
22

33
import (
4-
"encoding/json"
54
"fmt"
65

76
"github.com/MakeNowJust/heredoc/v2"
87
"github.com/OctopusDeploy/cli/pkg/cmd"
98
"github.com/OctopusDeploy/cli/pkg/cmd/ephemeralenvironment/util"
109
"github.com/OctopusDeploy/cli/pkg/constants"
1110
"github.com/OctopusDeploy/cli/pkg/factory"
12-
"github.com/OctopusDeploy/cli/pkg/output"
1311
"github.com/OctopusDeploy/cli/pkg/question/selectors"
1412
"github.com/OctopusDeploy/cli/pkg/util/flag"
1513
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/environments/v2/ephemeralenvironments"
@@ -107,53 +105,11 @@ func DeprovisionEnvironmentRun(deprovisionEnvironmentOptions *DeprovisionEnviron
107105
return err
108106
}
109107

110-
outputResult(deprovisionEnvironmentOptions, command, response)
108+
util.OutPutDeprovisionResult(deprovisionEnvironmentOptions.Name.Value, command, response.DeprovisioningRuns)
111109

112110
return nil
113111
}
114112

115-
func outputResult(deprovisionEnvironmentOptions *DeprovisionEnvironmentOptions, command *cobra.Command, response *ephemeralenvironments.DeprovisionEphemeralEnvironmentResponse) {
116-
command.Println("Deprovisioning environment: " + deprovisionEnvironmentOptions.Name.Value)
117-
118-
outputFormat, err := command.Flags().GetString(constants.FlagOutputFormat)
119-
if err != nil { // should never happen, but fallback if it does
120-
outputFormat = constants.OutputFormatTable
121-
}
122-
123-
switch outputFormat {
124-
case constants.OutputFormatBasic:
125-
if response.DeprovisioningRuns == nil || len(response.DeprovisioningRuns) == 0 {
126-
command.Println("Environment deprovisioned without running a runbook.")
127-
} else {
128-
for _, run := range response.DeprovisioningRuns {
129-
command.Printf("Runbook Run ID: %s \nServer Task ID %s \n", run.RunbookRunID, run.TaskId)
130-
}
131-
}
132-
case constants.OutputFormatJson:
133-
data, err := json.Marshal(response.DeprovisioningRuns)
134-
if err != nil { // shouldn't happen but fallback in case
135-
command.PrintErrln(err)
136-
} else {
137-
_, _ = command.OutOrStdout().Write(data)
138-
command.Println()
139-
}
140-
default: // table
141-
if response.DeprovisioningRuns == nil || len(response.DeprovisioningRuns) == 0 {
142-
command.Println("Environment deprovisioned without running a runbook.")
143-
} else {
144-
t := output.NewTable(command.OutOrStdout())
145-
t.AddRow(output.Bold("Runbook Run ID"), output.Bold("Server Task ID"))
146-
for _, run := range response.DeprovisioningRuns {
147-
t.AddRow(run.RunbookRunID, run.TaskId)
148-
}
149-
err := t.Print()
150-
if err != nil {
151-
command.PrintErrln(err)
152-
}
153-
}
154-
}
155-
}
156-
157113
func deprovisionEnvironment(deprovisionEnvironmentOptions *DeprovisionEnvironmentOptions, environment *ephemeralenvironments.EphemeralEnvironment) (*ephemeralenvironments.DeprovisionEphemeralEnvironmentResponse, error) {
158114
response, err := ephemeralenvironments.Deprovision(deprovisionEnvironmentOptions.Client, deprovisionEnvironmentOptions.Space.ID, environment.ID)
159115

pkg/cmd/ephemeralenvironment/util/util.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package util
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"strings"
67

8+
"github.com/OctopusDeploy/cli/pkg/constants"
9+
"github.com/OctopusDeploy/cli/pkg/output"
710
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/client"
811
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/environments/v2/ephemeralenvironments"
12+
"github.com/spf13/cobra"
913
)
1014

1115
func GetByName(client *client.Client, name string, spaceID string) (*ephemeralenvironments.EphemeralEnvironment, error) {
@@ -35,3 +39,49 @@ func GetByName(client *client.Client, name string, spaceID string) (*ephemeralen
3539
return nil, fmt.Errorf("could not find an exact match of an ephemeral environment with the name '%s'. Please specify a more specific name", name)
3640
}
3741
}
42+
43+
func OutPutDeprovisionResult(environmentName string, command *cobra.Command, deprovisioningRuns []ephemeralenvironments.DeprovisioningRunbookRun) {
44+
command.Println("Deprovisioning environment: " + environmentName)
45+
46+
outputFormat, err := command.Flags().GetString(constants.FlagOutputFormat)
47+
if err != nil {
48+
outputFormat = constants.OutputFormatTable
49+
}
50+
51+
if deprovisioningRuns == nil {
52+
deprovisioningRuns = []ephemeralenvironments.DeprovisioningRunbookRun{}
53+
}
54+
55+
switch outputFormat {
56+
case constants.OutputFormatBasic:
57+
if len(deprovisioningRuns) == 0 {
58+
command.Println("Environment deprovisioned without running a runbook.")
59+
} else {
60+
for _, run := range deprovisioningRuns {
61+
command.Printf("Runbook Run ID: %s \nServer Task ID %s \n", run.RunbookRunID, run.TaskId)
62+
}
63+
}
64+
case constants.OutputFormatJson:
65+
data, err := json.Marshal(deprovisioningRuns)
66+
if err != nil {
67+
command.PrintErrln(err)
68+
} else {
69+
_, _ = command.OutOrStdout().Write(data)
70+
command.Println()
71+
}
72+
default:
73+
if len(deprovisioningRuns) == 0 {
74+
command.Println("Environment deprovisioned without running a runbook.")
75+
} else {
76+
t := output.NewTable(command.OutOrStdout())
77+
t.AddRow(output.Bold("Runbook Run ID"), output.Bold("Server Task ID"))
78+
for _, run := range deprovisioningRuns {
79+
t.AddRow(run.RunbookRunID, run.TaskId)
80+
}
81+
err := t.Print()
82+
if err != nil {
83+
command.PrintErrln(err)
84+
}
85+
}
86+
}
87+
}

0 commit comments

Comments
 (0)