@@ -22,6 +22,7 @@ import (
22
22
23
23
"github.com/codefresh-io/cli-v2/pkg/util"
24
24
25
+ "github.com/codefresh-io/cli-v2/pkg/log"
25
26
"github.com/codefresh-io/go-sdk/pkg/client"
26
27
platmodel "github.com/codefresh-io/go-sdk/pkg/model/promotion-orchestrator"
27
28
"github.com/spf13/cobra"
@@ -37,6 +38,55 @@ type (
37
38
}
38
39
)
39
40
41
+ const latest_query = `
42
+ query getProductReleasesList(
43
+ $productName: String!
44
+ $filters: ProductReleaseFiltersArgs!
45
+ $pagination: SlicePaginationArgs
46
+ ) {
47
+ productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
48
+ edges {
49
+ node {
50
+ releaseId
51
+ steps {
52
+ environmentName
53
+ status
54
+ applications {
55
+ applicationId {
56
+ runtime
57
+ namespace
58
+ name
59
+ }
60
+ commitSha
61
+ }
62
+ }
63
+ status
64
+ }
65
+ }
66
+ }
67
+ }
68
+ `
69
+
70
+ const pre_v1_3120_1_query = `
71
+ query getProductReleasesList(
72
+ $productName: String!
73
+ $filters: ProductReleaseFiltersArgs!
74
+ $pagination: SlicePaginationArgs
75
+ ) {
76
+ productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
77
+ edges {
78
+ node {
79
+ releaseId
80
+ steps {
81
+ environmentName
82
+ status
83
+ }
84
+ status
85
+ }
86
+ }
87
+ }
88
+ }`
89
+
40
90
func NewProductReleaseCommand () * cobra.Command {
41
91
cmd := & cobra.Command {
42
92
Use : "product-release" ,
@@ -98,25 +148,7 @@ func newProductReleaseListCommand() *cobra.Command {
98
148
99
149
// client here is for mock testings usage
100
150
func runProductReleaseList (ctx context.Context , filterArgs platmodel.ProductReleaseFiltersArgs , productName string , pageLimit int ) error {
101
- query := `
102
- query getProductReleasesList(
103
- $productName: String!
104
- $filters: ProductReleaseFiltersArgs!
105
- $pagination: SlicePaginationArgs
106
- ) {
107
- productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
108
- edges {
109
- node {
110
- releaseId
111
- steps {
112
- environmentName
113
- status
114
- }
115
- status
116
- }
117
- }
118
- }
119
- }`
151
+
120
152
// add pagination - default for now is last 20
121
153
variables := map [string ]any {
122
154
"filters" : filterArgs ,
@@ -126,9 +158,15 @@ query getProductReleasesList(
126
158
},
127
159
}
128
160
129
- productReleasesPage , err := client .GraphqlAPI [productReleaseSlice ](ctx , cfConfig .NewClient ().InternalClient (), query , variables )
161
+ productReleasesPage , err := client .GraphqlAPI [productReleaseSlice ](ctx , cfConfig .NewClient ().InternalClient (), latest_query , variables )
130
162
if err != nil {
131
- return fmt .Errorf ("failed to get product releases: %w" , err )
163
+ if strings .Contains (err .Error (), "Cannot query field \\ \" applications\\ \" on type \\ \" ProductReleaseStep\\ \" ." ) {
164
+ log .G ().Warn ("codefresh version older than v1.3120.1 detected. Using pre v1.3120.1 query which excludes applications." )
165
+ productReleasesPage , err = client .GraphqlAPI [productReleaseSlice ](ctx , cfConfig .NewClient ().InternalClient (), pre_v1_3120_1_query , variables )
166
+ }
167
+ if err != nil {
168
+ return fmt .Errorf ("failed to get product releases: %s" , err .Error ())
169
+ }
132
170
}
133
171
134
172
if len (productReleasesPage .Edges ) == 0 {
0 commit comments