@@ -3,34 +3,36 @@ import { context, GitHub } from "@actions/github";
33
44import * as Octokit from "@octokit/rest" ;
55
6+ type IResponse = Octokit . Response < Octokit . ReposGetLatestReleaseResponse | Octokit . ReposCreateReleaseResponse > ;
7+
68async function run ( ) : Promise < void > {
7- const tag : string = core . getInput ( "tag" , { required : true } ) ;
8- const name : string = core . getInput ( "name" , { required : true } ) ;
9+ const tag : string = core . getInput ( "tag" , { required : true } ) ;
10+ const name : string = core . getInput ( "name" , { required : true } ) ;
911 const body : string = core . getInput ( "body" ) ;
1012 const draft : boolean = core . getInput ( "draft" ) === "true" ;
1113 const prerelease : boolean = core . getInput ( "prerelease" ) === "true" ;
1214 const target_commitish : string = core . getInput ( "target" ) ;
1315
1416 const { owner, repo } = context . repo ;
1517
18+ if ( ! process . env . GITHUB_TOKEN ) {
19+ core . setFailed ( "Missing GitHub token" ) ;
20+ return ;
21+ }
22+
1623 const github : GitHub = new GitHub ( process . env . GITHUB_TOKEN ) ;
1724
18- let releaseID : number = - 1 ;
19- let releaseURL : string = "" ;
20- let releaseUploadURL : string = "" ;
25+ let response : undefined | IResponse ;
2126
2227 try {
23- const response : Octokit . Response < Octokit . ReposGetLatestReleaseResponse > = await github . repos . getReleaseByTag ( {
28+ response = await github . repos . getReleaseByTag ( {
2429 owner,
2530 repo,
2631 tag,
2732 } ) ;
28- releaseID = response . data . id ;
29- releaseURL = response . data . html_url ;
30- releaseUploadURL = response . data . upload_url ;
3133 } catch ( error ) {
3234 try {
33- const response : Octokit . Response < Octokit . ReposCreateReleaseResponse > = await github . repos . createRelease ( {
35+ response = await github . repos . createRelease ( {
3436 body,
3537 draft,
3638 name,
@@ -40,34 +42,18 @@ async function run(): Promise<void> {
4042 tag_name : tag ,
4143 target_commitish,
4244 } ) ;
43-
44- releaseID = response . data . id ;
45- releaseURL = response . data . html_url ;
46- releaseUploadURL = response . data . assets_url ;
4745 } catch ( createError ) {
48- core . setFailed ( "Error" ) ;
49- return ;
46+ core . setFailed ( "Error: " + JSON . stringify ( createError ) ) ;
5047 }
5148 }
5249
53- if ( releaseID < 0 ) {
54- core . setFailed ( "Invalid release id " + releaseID ) ;
55- return ;
50+ if ( response ) {
51+ core . setOutput ( "id" , response . data . id . toString ( ) ) ;
52+ core . setOutput ( "url" , response . data . html_url ) ;
53+ core . setOutput ( "upload_url" , response . data . upload_url ) ;
54+ } else {
55+ core . setFailed ( "Invalid release" ) ;
5656 }
57-
58- if ( ! releaseURL || ! releaseURL . length ) {
59- core . setFailed ( "Invalid release URL" ) ;
60- return ;
61- }
62-
63- if ( ! releaseUploadURL || ! releaseUploadURL . length ) {
64- core . setFailed ( "Invalid release URL" ) ;
65- return ;
66- }
67-
68- core . setOutput ( "id" , releaseID . toString ( ) ) ;
69- core . setOutput ( "url" , releaseURL ) ;
70- core . setOutput ( "upload_url" , releaseUploadURL ) ;
7157}
7258
7359run ( ) ;
0 commit comments