@@ -18,6 +18,8 @@ import readChangesetState from "./readChangesetState";
1818import resolveFrom from "resolve-from" ;
1919import { throttling } from "@octokit/plugin-throttling" ;
2020
21+ type ReleasedPackage = Package & { uploadUrl : string } ;
22+
2123// GitHub Issues/PRs messages have a max size limit on the
2224// message body payload.
2325// `body is too long (maximum is 65536 characters)`.
@@ -76,7 +78,7 @@ const createRelease = async (
7678 ) ;
7779 }
7880
79- await octokit . rest . repos . createRelease ( {
81+ return await octokit . rest . repos . createRelease ( {
8082 name : tagName ,
8183 tag_name : tagName ,
8284 body : changelogEntry . content ,
@@ -133,7 +135,8 @@ export async function runPublish({
133135 await gitUtils . pushTags ( ) ;
134136
135137 let { packages, tool } = await getPackages ( cwd ) ;
136- let releasedPackages : Package [ ] = [ ] ;
138+ let packagesToRelease : Package [ ] = [ ] ;
139+ let releasedPackages : ReleasedPackage [ ] = [ ] ;
137140
138141 if ( tool !== "root" ) {
139142 let newTagRegex = / N e w t a g : \s + ( @ [ ^ / ] + \/ [ ^ @ ] + | [ ^ / ] + ) @ ( [ ^ \s ] + ) / ;
@@ -152,18 +155,23 @@ export async function runPublish({
152155 "This is probably a bug in the action, please open an issue"
153156 ) ;
154157 }
155- releasedPackages . push ( pkg ) ;
158+ packagesToRelease . push ( pkg ) ;
156159 }
157160
158161 if ( createGithubReleases ) {
159- await Promise . all (
160- releasedPackages . map ( ( pkg ) =>
161- createRelease ( octokit , {
162- pkg,
163- tagName : `${ pkg . packageJson . name } @${ pkg . packageJson . version } ` ,
162+ releasedPackages = (
163+ await Promise . all (
164+ packagesToRelease . map ( async ( pkg ) => {
165+ const release = await createRelease ( octokit , {
166+ pkg,
167+ tagName : `${ pkg . packageJson . name } @${ pkg . packageJson . version } ` ,
168+ } ) ;
169+ if ( release ) {
170+ return { ...pkg , uploadUrl : release . data . upload_url } ;
171+ }
164172 } )
165173 )
166- ) ;
174+ ) . filter ( ( pkg ) => pkg !== undefined ) ;
167175 }
168176 } else {
169177 if ( packages . length === 0 ) {
@@ -179,12 +187,18 @@ export async function runPublish({
179187 let match = line . match ( newTagRegex ) ;
180188
181189 if ( match ) {
182- releasedPackages . push ( pkg ) ;
190+ packagesToRelease . push ( pkg ) ;
183191 if ( createGithubReleases ) {
184- await createRelease ( octokit , {
192+ const release = await createRelease ( octokit , {
185193 pkg,
186194 tagName : `v${ pkg . packageJson . version } ` ,
187195 } ) ;
196+ if ( release ) {
197+ releasedPackages . push ( {
198+ ...pkg ,
199+ uploadUrl : release . data . upload_url ,
200+ } ) ;
201+ }
188202 }
189203 break ;
190204 }
@@ -197,6 +211,7 @@ export async function runPublish({
197211 publishedPackages : releasedPackages . map ( ( pkg ) => ( {
198212 name : pkg . packageJson . name ,
199213 version : pkg . packageJson . version ,
214+ uploadUrl : pkg . uploadUrl ,
200215 } ) ) ,
201216 } ;
202217 }
0 commit comments