@@ -3,34 +3,36 @@ import { context, GitHub } from "@actions/github";
3
3
4
4
import * as Octokit from "@octokit/rest" ;
5
5
6
+ type IResponse = Octokit . Response < Octokit . ReposGetLatestReleaseResponse | Octokit . ReposCreateReleaseResponse > ;
7
+
6
8
async 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 } ) ;
9
11
const body : string = core . getInput ( "body" ) ;
10
12
const draft : boolean = core . getInput ( "draft" ) === "true" ;
11
13
const prerelease : boolean = core . getInput ( "prerelease" ) === "true" ;
12
14
const target_commitish : string = core . getInput ( "target" ) ;
13
15
14
16
const { owner, repo } = context . repo ;
15
17
18
+ if ( ! process . env . GITHUB_TOKEN ) {
19
+ core . setFailed ( "Missing GitHub token" ) ;
20
+ return ;
21
+ }
22
+
16
23
const github : GitHub = new GitHub ( process . env . GITHUB_TOKEN ) ;
17
24
18
- let releaseID : number = - 1 ;
19
- let releaseURL : string = "" ;
20
- let releaseUploadURL : string = "" ;
25
+ let response : undefined | IResponse ;
21
26
22
27
try {
23
- const response : Octokit . Response < Octokit . ReposGetLatestReleaseResponse > = await github . repos . getReleaseByTag ( {
28
+ response = await github . repos . getReleaseByTag ( {
24
29
owner,
25
30
repo,
26
31
tag,
27
32
} ) ;
28
- releaseID = response . data . id ;
29
- releaseURL = response . data . html_url ;
30
- releaseUploadURL = response . data . upload_url ;
31
33
} catch ( error ) {
32
34
try {
33
- const response : Octokit . Response < Octokit . ReposCreateReleaseResponse > = await github . repos . createRelease ( {
35
+ response = await github . repos . createRelease ( {
34
36
body,
35
37
draft,
36
38
name,
@@ -40,34 +42,18 @@ async function run(): Promise<void> {
40
42
tag_name : tag ,
41
43
target_commitish,
42
44
} ) ;
43
-
44
- releaseID = response . data . id ;
45
- releaseURL = response . data . html_url ;
46
- releaseUploadURL = response . data . assets_url ;
47
45
} catch ( createError ) {
48
- core . setFailed ( "Error" ) ;
49
- return ;
46
+ core . setFailed ( "Error: " + JSON . stringify ( createError ) ) ;
50
47
}
51
48
}
52
49
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" ) ;
56
56
}
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 ) ;
71
57
}
72
58
73
59
run ( ) ;
0 commit comments