@@ -16,14 +16,14 @@ async function main() {
16
16
return ;
17
17
}
18
18
19
- await setGitConfig ( ) ;
19
+ await setGitConfig ( missingVersions ) ;
20
20
for ( const version of missingVersions ) {
21
- console . log ( `Updating to ${ PACKAGE_NAME } ${ version } ` ) ;
21
+ console . log ( getMessage ( version ) ) ;
22
22
await updateFiles ( version ) ;
23
- await commitAndPushTag ( version ) ;
23
+ await commitTag ( version ) ;
24
24
}
25
25
26
- await git ( "push" , "origin" , `HEAD:refs/heads/ ${ DEFAULT_BRANCH } ` ) ;
26
+ await mergePullRequest ( missingVersions ) ;
27
27
}
28
28
29
29
async function getMissingVersions ( ) {
@@ -37,6 +37,12 @@ async function getAllVersions() {
37
37
return allVersions . filter ( ( v ) => ! v . includes ( "nightly" ) ) . sort ( ) ;
38
38
}
39
39
40
+ async function getNodePackageVersions ( packageName ) {
41
+ const { stdout } = await exec ( `npm view ${ packageName } --json` ) ;
42
+ const output = JSON . parse ( stdout ) ;
43
+ return output . versions ;
44
+ }
45
+
40
46
async function getExistingVersions ( ) {
41
47
const existingTags = await git ( "tag" , "--list" ) ;
42
48
return existingTags
@@ -45,17 +51,21 @@ async function getExistingVersions() {
45
51
. sort ( ) ;
46
52
}
47
53
48
- async function setGitConfig ( ) {
54
+ function getMessage ( version ) {
55
+ return `build(deps): bump ${ PACKAGE_NAME } to ${ version } ` ;
56
+ }
57
+
58
+ async function setGitConfig ( versions ) {
49
59
const email = `${ GITHUB_ACTOR_ID } +${ GITHUB_ACTOR } @users.noreply.github.com` ;
60
+
50
61
await git ( "config" , "user.name" , GITHUB_ACTOR ) ;
51
62
await git ( "config" , "user.email" , email ) ;
52
63
await git ( "checkout" , DEFAULT_BRANCH ) ;
64
+ await git ( "checkout" , "-b" , getBranchName ( versions . at ( - 1 ) ) ) ;
53
65
}
54
66
55
- async function getNodePackageVersions ( packageName ) {
56
- const { stdout } = await exec ( `npm view ${ packageName } --json` ) ;
57
- const output = JSON . parse ( stdout ) ;
58
- return output . versions ;
67
+ function getBranchName ( version ) {
68
+ return `build/bump-${ PACKAGE_NAME . replace ( "/" , "-" ) } -${ version } ` ;
59
69
}
60
70
61
71
async function updateFiles ( version ) {
@@ -82,12 +92,25 @@ async function updatePackageJson(version) {
82
92
) ;
83
93
}
84
94
85
- async function commitAndPushTag ( version ) {
95
+ async function commitTag ( version ) {
86
96
const tag = `v${ version } ` ;
97
+ const message = getMessage ( version ) ;
98
+
87
99
await git ( "add" , "README.md" , "package.json" , "package-lock.json" ) ;
88
- await git ( "commit" , "-m" , `"MAINT: upgrade to ${ PACKAGE_NAME } ${ version } "` ) ;
89
- await git ( "tag" , tag ) ;
90
- await git ( "push" , "origin" , tag ) ;
100
+ await git ( "commit" , "--message" , `"${ message } "` ) ;
101
+ await git ( "tag" , "--annotate" , tag , "--message" , `"${ message } "` ) ;
102
+ }
103
+
104
+ async function mergePullRequest ( versions ) {
105
+ await git (
106
+ "push" ,
107
+ "--follow-tags" ,
108
+ "--set-upstream" ,
109
+ "origin" ,
110
+ getBranchName ( versions . at ( - 1 ) )
111
+ ) ;
112
+ await exec ( `gh pr create --fill --title "${ getMessage ( versions . at ( - 1 ) ) } "` ) ;
113
+ await exec ( "gh pr merge --auto --merge --delete-branch" ) ;
91
114
}
92
115
93
116
async function git ( ...cmd ) {
0 commit comments