@@ -2,10 +2,10 @@ package github
22
33import (
44 "context"
5- "fmt"
65 "strconv"
76 "strings"
87
8+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
99 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1010
1111 "github.com/google/go-github/v81/github"
@@ -14,7 +14,7 @@ import (
1414
1515func dataSourceGithubRelease () * schema.Resource {
1616 return & schema.Resource {
17- Read : dataSourceGithubReleaseRead ,
17+ ReadContext : dataSourceGithubReleaseRead ,
1818 Description : "Use this data source to retrieve information about a GitHub release in a specific repository." ,
1919 Schema : map [string ]* schema.Schema {
2020 "repository" : {
@@ -156,12 +156,11 @@ func dataSourceGithubRelease() *schema.Resource {
156156 }
157157}
158158
159- func dataSourceGithubReleaseRead (d * schema.ResourceData , meta any ) error {
159+ func dataSourceGithubReleaseRead (ctx context. Context , d * schema.ResourceData , meta any ) diag. Diagnostics {
160160 repository := d .Get ("repository" ).(string )
161161 owner := d .Get ("owner" ).(string )
162162
163163 client := meta .(* Owner ).v3client
164- ctx := context .Background ()
165164
166165 var err error
167166 var release * github.RepositoryRelease
@@ -172,85 +171,70 @@ func dataSourceGithubReleaseRead(d *schema.ResourceData, meta any) error {
172171 case "id" :
173172 releaseID := int64 (d .Get ("release_id" ).(int ))
174173 if releaseID == 0 {
175- return fmt .Errorf ("`release_id` must be set when `retrieve_by` = `id`" )
174+ return diag .Errorf ("`release_id` must be set when `retrieve_by` = `id`" )
176175 }
177176
178177 release , _ , err = client .Repositories .GetRelease (ctx , owner , repository , releaseID )
179178 case "tag" :
180179 tag := d .Get ("release_tag" ).(string )
181180 if tag == "" {
182- return fmt .Errorf ("`release_tag` must be set when `retrieve_by` = `tag`" )
181+ return diag .Errorf ("`release_tag` must be set when `retrieve_by` = `tag`" )
183182 }
184183
185184 release , _ , err = client .Repositories .GetReleaseByTag (ctx , owner , repository , tag )
186185 default :
187- return fmt .Errorf ("one of: `latest`, `id`, `tag` must be set for `retrieve_by`" )
186+ return diag .Errorf ("one of: `latest`, `id`, `tag` must be set for `retrieve_by`" )
188187 }
189188
190189 if err != nil {
191- return err
190+ return diag . FromErr ( err )
192191 }
193192
194193 d .SetId (strconv .FormatInt (release .GetID (), 10 ))
195- err = d .Set ("release_tag" , release .GetTagName ())
196- if err != nil {
197- return err
194+ if err = d .Set ("release_tag" , release .GetTagName ()); err != nil {
195+ return diag .FromErr (err )
198196 }
199- err = d .Set ("target_commitish" , release .GetTargetCommitish ())
200- if err != nil {
201- return err
197+ if err = d .Set ("target_commitish" , release .GetTargetCommitish ()); err != nil {
198+ return diag .FromErr (err )
202199 }
203- err = d .Set ("name" , release .GetName ())
204- if err != nil {
205- return err
200+ if err = d .Set ("name" , release .GetName ()); err != nil {
201+ return diag .FromErr (err )
206202 }
207- err = d .Set ("body" , release .GetBody ())
208- if err != nil {
209- return err
203+ if err = d .Set ("body" , release .GetBody ()); err != nil {
204+ return diag .FromErr (err )
210205 }
211- err = d .Set ("draft" , release .GetDraft ())
212- if err != nil {
213- return err
206+ if err = d .Set ("draft" , release .GetDraft ()); err != nil {
207+ return diag .FromErr (err )
214208 }
215- err = d .Set ("prerelease" , release .GetPrerelease ())
216- if err != nil {
217- return err
209+ if err = d .Set ("prerelease" , release .GetPrerelease ()); err != nil {
210+ return diag .FromErr (err )
218211 }
219- err = d .Set ("created_at" , release .GetCreatedAt ().String ())
220- if err != nil {
221- return err
212+ if err = d .Set ("created_at" , release .GetCreatedAt ().String ()); err != nil {
213+ return diag .FromErr (err )
222214 }
223- err = d .Set ("published_at" , release .GetPublishedAt ().String ())
224- if err != nil {
225- return err
215+ if err = d .Set ("published_at" , release .GetPublishedAt ().String ()); err != nil {
216+ return diag .FromErr (err )
226217 }
227- err = d .Set ("url" , release .GetURL ())
228- if err != nil {
229- return err
218+ if err = d .Set ("url" , release .GetURL ()); err != nil {
219+ return diag .FromErr (err )
230220 }
231- err = d .Set ("html_url" , release .GetHTMLURL ())
232- if err != nil {
233- return err
221+ if err = d .Set ("html_url" , release .GetHTMLURL ()); err != nil {
222+ return diag .FromErr (err )
234223 }
235- err = d .Set ("assets_url" , release .GetAssetsURL ())
236- if err != nil {
237- return err
224+ if err = d .Set ("assets_url" , release .GetAssetsURL ()); err != nil {
225+ return diag .FromErr (err )
238226 }
239- err = d .Set ("asserts_url" , release .GetAssetsURL ()) // Deprecated, original version of assets_url
240- if err != nil {
241- return err
227+ if err = d .Set ("asserts_url" , release .GetAssetsURL ()); err != nil { // Deprecated, original version of assets_url
228+ return diag .FromErr (err )
242229 }
243- err = d .Set ("upload_url" , release .GetUploadURL ())
244- if err != nil {
245- return err
230+ if err = d .Set ("upload_url" , release .GetUploadURL ()); err != nil {
231+ return diag .FromErr (err )
246232 }
247- err = d .Set ("zipball_url" , release .GetZipballURL ())
248- if err != nil {
249- return err
233+ if err = d .Set ("zipball_url" , release .GetZipballURL ()); err != nil {
234+ return diag .FromErr (err )
250235 }
251- err = d .Set ("tarball_url" , release .GetTarballURL ())
252- if err != nil {
253- return err
236+ if err = d .Set ("tarball_url" , release .GetTarballURL ()); err != nil {
237+ return diag .FromErr (err )
254238 }
255239
256240 assets := make ([]any , 0 , len (release .Assets ))
@@ -273,9 +257,8 @@ func dataSourceGithubReleaseRead(d *schema.ResourceData, meta any) error {
273257 })
274258 }
275259
276- err = d .Set ("assets" , assets )
277- if err != nil {
278- return err
260+ if err = d .Set ("assets" , assets ); err != nil {
261+ return diag .FromErr (err )
279262 }
280263
281264 return nil
0 commit comments