2
2
* Used in `/.github/workflows/pkg.pr.new.yml`
3
3
*/
4
4
export default async function ( { github, context, output } ) {
5
- // eslint-disable-next-line no-console -- For debugging on github actions.
6
- console . log ( "pkg-pr-new publish output:" , JSON . stringify ( output ) ) ;
7
-
8
- const sha =
9
- context . eventName === "pull_request"
10
- ? context . payload . pull_request . head . sha
11
- : context . payload . after ;
12
- const commitUrl = `https://github.com/${ context . repo . owner } /${ context . repo . repo } /commit/${ sha } ` ;
13
-
14
- const pullRequestNumber = await getPullRequestNumber ( ) ;
15
-
16
- const packages = output . packages . map ( ( p ) => {
17
- let normalizedUrl = p . url ;
18
- if ( pullRequestNumber && p . url . endsWith ( sha ) ) {
19
- normalizedUrl = `${ p . url . slice ( 0 , - sha . length ) } ${ pullRequestNumber } ` ;
20
- }
21
- const repoPath = `/${ context . repo . owner } /${ context . repo . repo } /` ;
22
- normalizedUrl = normalizedUrl . replace ( repoPath , "/" ) ;
23
-
24
- return {
25
- name : p . name ,
26
- url : normalizedUrl ,
27
- } ;
28
- } ) ;
29
-
30
- const botCommentIdentifier = "<!-- posted by pkg.pr.new-comment.mjs -->" ;
31
-
32
- const onlineUrl = new URL (
33
- "https://eslint-online-playground.netlify.app/#eslint-plugin-svelte%20with%20typescript" ,
34
- ) ;
35
- const overrideDeps = { } ;
36
- for ( const p of packages ) {
37
- overrideDeps [ p . name ] = p . url ;
38
- }
39
- onlineUrl . searchParams . set ( "overrideDeps" , JSON . stringify ( overrideDeps ) ) ;
40
- const body = `${ botCommentIdentifier }
5
+ // eslint-disable-next-line no-console -- For debugging on github actions.
6
+ console . log ( 'pkg-pr-new publish output:' , JSON . stringify ( output ) ) ;
7
+
8
+ const sha = output . sha ;
9
+ const commitUrl = `https://github.com/${ context . repo . owner } /${ context . repo . repo } /commit/${ sha } ` ;
10
+
11
+ const pullRequestNumber = await getPullRequestNumber ( ) ;
12
+
13
+ const packages = output . packages . map ( ( p ) => {
14
+ let normalizedUrl = p . url ;
15
+ if ( pullRequestNumber && p . url . endsWith ( sha ) ) {
16
+ normalizedUrl = `${ p . url . slice ( 0 , - sha . length ) } ${ pullRequestNumber } ` ;
17
+ }
18
+ const repoPath = `/${ context . repo . owner } /${ context . repo . repo } /` ;
19
+ normalizedUrl = normalizedUrl . replace ( repoPath , '/' ) ;
20
+
21
+ return {
22
+ name : p . name ,
23
+ url : normalizedUrl
24
+ } ;
25
+ } ) ;
26
+
27
+ const botCommentIdentifier = '<!-- posted by pkg.pr.new-comment.mjs -->' ;
28
+
29
+ const onlineUrl = new URL (
30
+ 'https://eslint-online-playground.netlify.app/#eslint-plugin-svelte%20with%20typescript'
31
+ ) ;
32
+ const overrideDeps = { } ;
33
+ for ( const p of packages ) {
34
+ overrideDeps [ p . name ] = p . url ;
35
+ }
36
+ onlineUrl . searchParams . set ( 'overrideDeps' , JSON . stringify ( overrideDeps ) ) ;
37
+ const body = `${ botCommentIdentifier }
41
38
42
39
## Try the Instant Preview in Online Playground
43
40
@@ -46,79 +43,61 @@ export default async function ({ github, context, output }) {
46
43
## Install the Instant Preview to Your Local
47
44
48
45
\`\`\`
49
- npm i ${ packages . map ( ( p ) => p . url ) . join ( " " ) }
46
+ npm i ${ packages . map ( ( p ) => p . url ) . join ( ' ' ) }
50
47
\`\`\`
51
48
52
49
## Published Instant Preview Packages:
53
50
54
- ${ packages . map ( ( p ) => `- ${ p . name } : ${ p . url } ` ) . join ( "\n" ) }
51
+ ${ packages . map ( ( p ) => `- ${ p . name } : ${ p . url } ` ) . join ( '\n' ) }
55
52
56
53
[View Commit](${ commitUrl } )` ;
57
54
58
- if ( pullRequestNumber ) {
59
- await createOrUpdateComment ( pullRequestNumber ) ;
60
- } else {
61
- /* eslint-disable no-console -- For debugging on github actions. */
62
- console . log (
63
- "No open pull request found for this push. Logging publish information to console:" ,
64
- ) ;
65
- console . log ( `\n${ "=" . repeat ( 50 ) } ` ) ;
66
- console . log ( body ) ;
67
- console . log ( `\n${ "=" . repeat ( 50 ) } ` ) ;
68
- /* eslint-enable no-console -- For debugging on github actions. */
69
- }
70
-
71
- async function getPullRequestNumber ( ) {
72
- if ( context . eventName === "pull_request" ) {
73
- if ( context . issue . number ) {
74
- return context . issue . number ;
75
- }
76
- } else if ( context . eventName === "push" ) {
77
- const pullRequests = await github . rest . pulls . list ( {
78
- owner : context . repo . owner ,
79
- repo : context . repo . repo ,
80
- state : "open" ,
81
- head : `${ context . repo . owner } :${ context . ref . replace ( "refs/heads/" , "" ) } ` ,
82
- } ) ;
83
-
84
- if ( pullRequests . data . length > 0 ) {
85
- return pullRequests . data [ 0 ] . number ;
86
- }
87
- }
88
- return null ;
89
- }
90
-
91
- async function findBotComment ( issueNumber ) {
92
- if ( ! issueNumber ) return null ;
93
- const comments = await github . rest . issues . listComments ( {
94
- owner : context . repo . owner ,
95
- repo : context . repo . repo ,
96
- // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
97
- issue_number : issueNumber ,
98
- } ) ;
99
- return comments . data . find ( ( comment ) =>
100
- comment . body . includes ( botCommentIdentifier ) ,
101
- ) ;
102
- }
103
-
104
- async function createOrUpdateComment ( issueNumber ) {
105
- const existingComment = await findBotComment ( issueNumber ) ;
106
- if ( existingComment ) {
107
- await github . rest . issues . updateComment ( {
108
- owner : context . repo . owner ,
109
- repo : context . repo . repo ,
110
- // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
111
- comment_id : existingComment . id ,
112
- body,
113
- } ) ;
114
- } else {
115
- await github . rest . issues . createComment ( {
116
- // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
117
- issue_number : issueNumber ,
118
- owner : context . repo . owner ,
119
- repo : context . repo . repo ,
120
- body,
121
- } ) ;
122
- }
123
- }
55
+ if ( pullRequestNumber ) {
56
+ await createOrUpdateComment ( pullRequestNumber ) ;
57
+ } else {
58
+ /* eslint-disable no-console -- For debugging on github actions. */
59
+ console . log (
60
+ 'No open pull request found for this push. Logging publish information to console:'
61
+ ) ;
62
+ console . log ( `\n${ '=' . repeat ( 50 ) } ` ) ;
63
+ console . log ( body ) ;
64
+ console . log ( `\n${ '=' . repeat ( 50 ) } ` ) ;
65
+ /* eslint-enable no-console -- For debugging on github actions. */
66
+ }
67
+
68
+ async function getPullRequestNumber ( ) {
69
+ return output . number ;
70
+ }
71
+
72
+ async function findBotComment ( issueNumber ) {
73
+ if ( ! issueNumber ) return null ;
74
+ const comments = await github . rest . issues . listComments ( {
75
+ owner : context . repo . owner ,
76
+ repo : context . repo . repo ,
77
+ // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
78
+ issue_number : issueNumber
79
+ } ) ;
80
+ return comments . data . find ( ( comment ) => comment . body . includes ( botCommentIdentifier ) ) ;
81
+ }
82
+
83
+ async function createOrUpdateComment ( issueNumber ) {
84
+ const existingComment = await findBotComment ( issueNumber ) ;
85
+ if ( existingComment ) {
86
+ await github . rest . issues . updateComment ( {
87
+ owner : context . repo . owner ,
88
+ repo : context . repo . repo ,
89
+ // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
90
+ comment_id : existingComment . id ,
91
+ body
92
+ } ) ;
93
+ } else {
94
+ await github . rest . issues . createComment ( {
95
+ // eslint-disable-next-line camelcase -- The ID defined in the GitHub API.
96
+ issue_number : issueNumber ,
97
+ owner : context . repo . owner ,
98
+ repo : context . repo . repo ,
99
+ body
100
+ } ) ;
101
+ }
102
+ }
124
103
}
0 commit comments