@@ -22,6 +22,7 @@ import (
2222
2323 "github.com/codefresh-io/cli-v2/pkg/util"
2424
25+ "github.com/codefresh-io/cli-v2/pkg/log"
2526 "github.com/codefresh-io/go-sdk/pkg/client"
2627 platmodel "github.com/codefresh-io/go-sdk/pkg/model/promotion-orchestrator"
2728 "github.com/spf13/cobra"
@@ -37,6 +38,55 @@ type (
3738 }
3839)
3940
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+
4090func NewProductReleaseCommand () * cobra.Command {
4191 cmd := & cobra.Command {
4292 Use : "product-release" ,
@@ -98,25 +148,7 @@ func newProductReleaseListCommand() *cobra.Command {
98148
99149// client here is for mock testings usage
100150func 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+
120152 // add pagination - default for now is last 20
121153 variables := map [string ]any {
122154 "filters" : filterArgs ,
@@ -126,9 +158,15 @@ query getProductReleasesList(
126158 },
127159 }
128160
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 )
130162 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+ }
132170 }
133171
134172 if len (productReleasesPage .Edges ) == 0 {
0 commit comments