Skip to content

Commit d84b722

Browse files
committed
Add filters to envs by name and type
1 parent a9110d3 commit d84b722

File tree

2 files changed

+35
-14
lines changed

2 files changed

+35
-14
lines changed

cmd/environments.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@ func getEnvPipeline(repo string, id string) formatters.PipelineDetailsResponse {
2727

2828
}
2929

30+
func filterEnvsByName(envResJson *formatters.EnvResponse, envName string) {
31+
32+
for _, env := range envResJson.Values {
33+
if env.Name == envName {
34+
envResJson.Values = []formatters.Environment{env}
35+
}
36+
}
37+
38+
}
39+
40+
func filterEnvsByType(envResJson *formatters.EnvResponse, envType string) {
41+
envs := []formatters.Environment{}
42+
for _, env := range envResJson.Values {
43+
if env.EnvironmentType.Name == envType {
44+
envs = append(envs, env)
45+
}
46+
}
47+
envResJson.Values = envs
48+
}
49+
3050
var environmentCmd = &cobra.Command{
3151
Use: "envs",
3252
Short: "List environments",
@@ -51,9 +71,14 @@ var environmentCmd = &cobra.Command{
5171
}
5272
var envResJson formatters.EnvResponse
5373
json.NewDecoder(envsRes.Body).Decode(&envResJson)
54-
grouped, err := cmd.Flags().GetBool("grouped")
55-
if err != nil {
56-
grouped = false
74+
75+
envName, err := cmd.Flags().GetString("name")
76+
envType, err := cmd.Flags().GetString("type")
77+
if envName != "" && err == nil {
78+
filterEnvsByName(&envResJson, envName)
79+
}
80+
if envType != "" && err == nil {
81+
filterEnvsByType(&envResJson, envType)
5782
}
5883
if envsRes.StatusCode != 200 {
5984
bodyText, _ := io.ReadAll(envsRes.Body)
@@ -84,7 +109,7 @@ var environmentCmd = &cobra.Command{
84109
}
85110

86111
if !isCustomFormat {
87-
fmt.Println(formatters.FormatEnvs(envResJson, grouped))
112+
fmt.Println(formatters.FormatEnvs(envResJson))
88113
}
89114

90115
},
@@ -93,9 +118,10 @@ var environmentCmd = &cobra.Command{
93118
func init() {
94119
environmentCmd.PersistentFlags().StringP("repo", "r", "", "Repo remote url")
95120
environmentCmd.Flags().BoolP("json", "j", false, "Output as json")
96-
environmentCmd.Flags().BoolP("grouped", "g", true, "Group enviroments by type")
97121
environmentCmd.Flags().StringP("page", "p", "", "Page number for environments pagination")
98122
environmentCmd.Flags().StringP("format", "f", "", "Output template format")
123+
environmentCmd.Flags().StringP("name", "n", "", "Filter environments by name")
124+
environmentCmd.Flags().StringP("type", "t", "", "Filter environments by type")
99125

100126
rootCmd.AddCommand(environmentCmd)
101127

formatters/environments.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,16 @@ type EnvResponse struct {
5151
func FormatEnv(env Environment) string {
5252
return fmt.Sprintf("%s [%s] %s\n%s\n", env.Name, env.EnvironmentType.Name, env.Lock.Triggerer.PipelineUUID, FormatPipelineDetails(env.Pipeline))
5353
}
54-
func FormatEnvs(envRes EnvResponse, grouped bool) string {
54+
func FormatEnvs(envRes EnvResponse) string {
5555
output := make(map[string]string)
5656
sort.Slice(envRes.Values, func(i, j int) bool {
5757
return envRes.Values[i].Name < envRes.Values[j].Name
5858
})
59-
for i := 0; i < len(envRes.Values); i++ {
60-
env := envRes.Values[i]
6159

62-
if envString, ok := output[env.EnvironmentType.Name]; ok {
63-
64-
output[env.EnvironmentType.Name] = envString + "\n" + FormatEnv(env)
65-
} else {
66-
output[env.EnvironmentType.Name] = FormatEnv(env)
67-
}
60+
for _, env := range envRes.Values {
61+
output[env.EnvironmentType.Name] += FormatEnv(env) + "\n"
6862
}
63+
6964
outputString := ""
7065
for envType, envDetails := range output {
7166
outputString = outputString + envType + "\n===========\n" + envDetails + "\n"

0 commit comments

Comments
 (0)