@@ -9,15 +9,16 @@ import (
99 "strconv"
1010
1111 "github.com/google/go-github/v67/github"
12+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1213 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1314)
1415
1516func resourceGithubRelease () * schema.Resource {
1617 return & schema.Resource {
17- Create : resourceGithubReleaseCreateUpdate ,
18- Update : resourceGithubReleaseCreateUpdate ,
19- Read : resourceGithubReleaseRead ,
20- Delete : resourceGithubReleaseDelete ,
18+ CreateContext : resourceGithubReleaseCreateUpdate ,
19+ UpdateContext : resourceGithubReleaseCreateUpdate ,
20+ ReadContext : resourceGithubReleaseRead ,
21+ DeleteContext : resourceGithubReleaseDelete ,
2122 Importer : & schema.ResourceImporter {
2223 State : resourceGithubReleaseImport ,
2324 },
@@ -137,12 +138,7 @@ func resourceGithubRelease() *schema.Resource {
137138 }
138139}
139140
140- func resourceGithubReleaseCreateUpdate (d * schema.ResourceData , meta any ) error {
141- ctx := context .Background ()
142- if ! d .IsNewResource () {
143- ctx = context .WithValue (ctx , ctxId , d .Id ())
144- }
145-
141+ func resourceGithubReleaseCreateUpdate (ctx context.Context , d * schema.ResourceData , meta any ) diag.Diagnostics {
146142 client := meta .(* Owner ).v3client
147143 owner := meta .(* Owner ).name
148144 repoName := d .Get ("repository" ).(string )
@@ -183,12 +179,12 @@ func resourceGithubReleaseCreateUpdate(d *schema.ResourceData, meta any) error {
183179 log .Printf ("[DEBUG] Response from creating release: %#v" , * resp )
184180 }
185181 if err != nil {
186- return err
182+ return diag . FromErr ( err )
187183 }
188184 } else {
189185 id , err := strconv .ParseInt (d .Id (), 10 , 64 )
190186 if err != nil {
191- return err
187+ return diag . FromErr ( err )
192188 }
193189 log .Printf ("[DEBUG] Updating release: %d:%s (%s/%s)" ,
194190 id , targetCommitish , owner , repoName )
@@ -197,25 +193,25 @@ func resourceGithubReleaseCreateUpdate(d *schema.ResourceData, meta any) error {
197193 log .Printf ("[DEBUG] Response from updating release: %#v" , * resp )
198194 }
199195 if err != nil {
200- return err
196+ return diag . FromErr ( err )
201197 }
202198 }
203199
204200 transformResponseToResourceData (d , release , repoName )
205201 return nil
206202}
207203
208- func resourceGithubReleaseRead (d * schema.ResourceData , meta any ) error {
204+ func resourceGithubReleaseRead (ctx context. Context , d * schema.ResourceData , meta any ) diag. Diagnostics {
209205 repository := d .Get ("repository" ).(string )
210- ctx := context . WithValue ( context . Background (), ctxId , d . Id ())
206+
211207 client := meta .(* Owner ).v3client
212208 owner := meta .(* Owner ).name
213209 releaseID , err := strconv .ParseInt (d .Id (), 10 , 64 )
214210 if err != nil {
215- return err
211+ return diag . FromErr ( err )
216212 }
217213 if releaseID == 0 {
218- return fmt .Errorf ("`release_id` must be present" )
214+ return diag .Errorf ("`release_id` must be present" )
219215 }
220216
221217 release , _ , err := client .Repositories .GetRelease (ctx , owner , repository , releaseID )
@@ -228,31 +224,30 @@ func resourceGithubReleaseRead(d *schema.ResourceData, meta any) error {
228224 return nil
229225 }
230226 }
231- return err
227+ return diag . FromErr ( err )
232228 }
233229 transformResponseToResourceData (d , release , repository )
234230 return nil
235231}
236232
237- func resourceGithubReleaseDelete (d * schema.ResourceData , meta any ) error {
238- ctx := context .WithValue (context .Background (), ctxId , d .Id ())
233+ func resourceGithubReleaseDelete (ctx context.Context , d * schema.ResourceData , meta any ) diag.Diagnostics {
239234 repository := d .Get ("repository" ).(string )
240235 client := meta .(* Owner ).v3client
241236 owner := meta .(* Owner ).name
242237
243238 releaseIDStr := d .Id ()
244239 releaseID , err := strconv .ParseInt (d .Id (), 10 , 64 )
245240 if err != nil {
246- return unconvertibleIdErr (releaseIDStr , err )
241+ return diag . FromErr ( unconvertibleIdErr (releaseIDStr , err ) )
247242 }
248243 if releaseID == 0 {
249- return fmt .Errorf ("`release_id` must be present" )
244+ return diag .Errorf ("`release_id` must be present" )
250245 }
251246
252247 _ , err = client .Repositories .DeleteRelease (ctx , owner , repository , releaseID )
253248 if err != nil {
254- return fmt .Errorf ("error deleting GitHub release reference %s/%s (%s): %w" ,
255- fmt .Sprint (releaseID ), repository , owner , err )
249+ return diag . FromErr ( fmt .Errorf ("error deleting GitHub release reference %s/%s (%s): %w" ,
250+ fmt .Sprint (releaseID ), repository , owner , err ))
256251 }
257252 return nil
258253}
0 commit comments