@@ -54,30 +54,22 @@ const createClientReleaseFile = async (force = false): Promise<ClientReleaseFile
5454 '@server/static/releaseMetadata'
5555 )
5656 try {
57- progressBus . startOperation (
57+ const update = progressBus . start (
5858 ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
5959 'Creating Client Releases File' ,
6060 'Initializing Refresh'
6161 )
6262 const githubStore = await storeProvider . getStore ( 'githubStore' )
6363
64- progressBus . update (
65- ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
66- `Fetching latest release from ${ clientRepo } ` ,
67- 20
68- )
64+ update ( `Fetching latest release from ${ clientRepo } ` , 20 )
6965 logger . debug ( `Fetching latest release from ${ clientRepo } ` )
7066 const latestReleaseAssets = await githubStore . getLatestRelease ( clientRepo , force )
7167
7268 if ( ! latestReleaseAssets ) {
7369 throw new Error ( 'Unable to find latest release assets' )
7470 }
7571
76- progressBus . update (
77- ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
78- 'Searching for latest.json asset' ,
79- 30
80- )
72+ update ( 'Searching for latest.json asset' , 30 )
8173 const latestReleaseJsonAsset = latestReleaseAssets . assets . find (
8274 ( asset ) => asset . name == 'latest.json'
8375 )
@@ -86,11 +78,7 @@ const createClientReleaseFile = async (force = false): Promise<ClientReleaseFile
8678 throw new Error ( 'Unable to find latest.json asset in releases' )
8779 }
8880
89- progressBus . update (
90- ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
91- 'Fetching latest.json content' ,
92- 40
93- )
81+ update ( 'Fetching latest.json content' , 40 )
9482 const latestJSON = await githubStore . fetchJSONAssetContent <
9583 ClientLatestJSONLatest | MultiReleaseJSONLatest | AppLatestJSONLatest
9684 > ( latestReleaseJsonAsset )
@@ -149,6 +137,10 @@ const createClientReleaseFile = async (force = false): Promise<ClientReleaseFile
149137 timestamp : Date . now ( )
150138 }
151139
140+ progressBus . complete (
141+ ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
142+ 'Finished creating client release file'
143+ )
152144 return finalClientReleaseFile
153145 } catch ( error ) {
154146 progressBus . error (
@@ -163,30 +155,22 @@ const createClientReleaseFile = async (force = false): Promise<ClientReleaseFile
163155const createAppReleaseFile = async ( force = false ) : Promise < AppReleaseFile0118 > => {
164156 const { appsRepo, defaultAppLatestJSONFallback } = await import ( '@server/static/releaseMetadata' )
165157 try {
166- progressBus . startOperation (
158+ const update = progressBus . start (
167159 ProgressChannel . FN_RELEASE_APP_REFRESH ,
168160 'Creating App Releases File' ,
169161 'Initializing Refresh'
170162 )
171163 const githubStore = await storeProvider . getStore ( 'githubStore' )
172164
173- progressBus . update (
174- ProgressChannel . FN_RELEASE_APP_REFRESH ,
175- `Fetching latest release from ${ appsRepo } ` ,
176- 20
177- )
165+ update ( `Fetching latest release from ${ appsRepo } ` , 20 )
178166 logger . debug ( `Fetching latest release from ${ appsRepo } ` )
179167 const latestReleaseAssets = await githubStore . getLatestRelease ( appsRepo , force )
180168
181169 if ( ! latestReleaseAssets ) {
182170 throw new Error ( 'Unable to find latest release assets' )
183171 }
184172
185- progressBus . update (
186- ProgressChannel . FN_RELEASE_APP_REFRESH ,
187- 'Searching for latest.json asset' ,
188- 30
189- )
173+ update ( 'Searching for latest.json asset' , 30 )
190174 const latestReleaseJsonAsset = latestReleaseAssets . assets . find (
191175 ( asset ) => asset . name == 'latest.json'
192176 )
@@ -195,7 +179,7 @@ const createAppReleaseFile = async (force = false): Promise<AppReleaseFile0118>
195179 throw new Error ( 'Unable to find latest.json asset in releases' )
196180 }
197181
198- progressBus . update ( ProgressChannel . FN_RELEASE_APP_REFRESH , 'Fetching latest.json content' , 40 )
182+ update ( 'Fetching latest.json content' , 40 )
199183 const latestJSON = await githubStore . fetchJSONAssetContent <
200184 ClientLatestJSONLatest | MultiReleaseJSONLatest | AppLatestJSONLatest
201185 > ( latestReleaseJsonAsset )
@@ -204,26 +188,19 @@ const createAppReleaseFile = async (force = false): Promise<AppReleaseFile0118>
204188 throw new Error ( 'Unable to fetch latest.json' )
205189 }
206190
207- progressBus . update ( ProgressChannel . FN_RELEASE_APP_REFRESH , 'Validating latest.json content' , 50 )
191+ update ( 'Validating latest.json content' , 50 )
208192 const adaptedRelease = await handleReleaseJSONMigration ( latestJSON )
209193
210194 if ( adaptedRelease . meta_type == 'client' )
211195 throw new Error ( `Received meta type 'app' when expecting Multi or Client` )
212196
213197 if ( adaptedRelease . meta_type == 'multi' ) {
214- progressBus . update (
215- ProgressChannel . FN_RELEASE_APP_REFRESH ,
216- 'Converting multi-release to release server format' ,
217- 60
218- )
198+ update ( 'Converting multi-release to release server format' , 60 )
219199 const result = await convertMultiToReleaseServer ( adaptedRelease )
220200
221201 if ( result . type == 'converted-repos' ) {
222- progressBus . update (
223- ProgressChannel . FN_RELEASE_APP_REFRESH ,
224- 'Creating empty release file' ,
225- 80
226- )
202+ update ( 'Creating empty release file' , 100 )
203+
227204 return {
228205 version : '0.11.8' ,
229206 type : 'app' ,
@@ -236,11 +213,7 @@ const createAppReleaseFile = async (force = false): Promise<AppReleaseFile0118>
236213 if ( result . type == 'converted-clients' )
237214 throw new Error ( 'Received "client" type when expecting multi or client' )
238215
239- progressBus . update (
240- ProgressChannel . FN_RELEASE_APP_REFRESH ,
241- 'Creating app release file from multi-release' ,
242- 90
243- )
216+ update ( 'Creating app release file from multi-release' , 90 )
244217 const appReleaseFile : AppReleaseFile0118 = {
245218 version : '0.11.8' ,
246219 type : 'app' ,
@@ -249,14 +222,12 @@ const createAppReleaseFile = async (force = false): Promise<AppReleaseFile0118>
249222 timestamp : Date . now ( )
250223 }
251224
225+ update ( 'Finalizing app release file' , 100 )
226+
252227 return appReleaseFile
253228 }
254229
255- progressBus . update (
256- ProgressChannel . FN_RELEASE_APP_REFRESH ,
257- 'Creating app server configuration' ,
258- 70
259- )
230+ update ( 'Creating app server configuration' , 70 )
260231 const latestServer : AppLatestServer = {
261232 id : adaptedRelease . appManifest . id ,
262233 type : 'app' ,
@@ -266,7 +237,7 @@ const createAppReleaseFile = async (force = false): Promise<AppReleaseFile0118>
266237 pastReleases : [ ]
267238 }
268239
269- progressBus . update ( ProgressChannel . FN_RELEASE_APP_REFRESH , 'Finalizing app release file' , 90 )
240+ update ( 'Finalizing app release file' , 90 )
270241 const finalAppReleaseFile : AppReleaseFile0118 = {
271242 version : '0.11.8' ,
272243 type : 'app' ,
@@ -443,14 +414,26 @@ export async function handleRefreshReleaseFile<T extends 'app' | 'client'>(
443414 { force = false } : RefreshOptions
444415) : Promise < AppReleaseFile0118 | ClientReleaseFile0118 | ClientReleaseFile | AppReleaseFile > {
445416 try {
417+ const update = progressBus . start (
418+ type == 'app'
419+ ? ProgressChannel . FN_RELEASE_APP_REFRESH
420+ : ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
421+ 'Refreshing Release File' ,
422+ 'Starting...'
423+ )
424+
446425 // migrate to 0.11.8
447426 const releaseFile = await handleReleaseJSONFileMigration ( type , prevReleaseFile )
448427
428+ update ( `Updating ${ releaseFile . releases . length } ${ type } releases` , 50 )
449429 // Handle migrating any old releases to the latest
450430 const migratedReleases = await Promise . all (
451- releaseFile . releases . map ( ( release : ClientLatestServer | AppLatestServer ) =>
452- updateLatestServer ( release , force )
453- )
431+ releaseFile . releases . map ( async ( release : ClientLatestServer | AppLatestServer ) => {
432+ update ( `Updating ${ release . id } ` , 70 )
433+ const res = await updateLatestServer ( release , force )
434+ update ( `Updated ${ release . id } ` , 80 )
435+ return res
436+ } )
454437 )
455438
456439 if ( type == 'app' ) {
@@ -461,7 +444,8 @@ export async function handleRefreshReleaseFile<T extends 'app' | 'client'>(
461444 releases : migratedReleases as AppLatestServer [ ] ,
462445 timestamp : Date . now ( )
463446 }
464-
447+
448+ update ( 'Saving app release file' , 100 )
465449 return finalReleaseFile
466450 } else {
467451 const finalReleaseFile : ClientReleaseFile0118 = {
@@ -471,14 +455,23 @@ export async function handleRefreshReleaseFile<T extends 'app' | 'client'>(
471455 releases : migratedReleases as ClientLatestServer [ ] ,
472456 timestamp : Date . now ( )
473457 }
474-
458+ update ( 'Saving client release file' , 100 )
475459 return finalReleaseFile
476460 }
477461 } catch ( error ) {
478462 logger . warn ( `Unable to migrate ${ type } release file because: ${ handleError ( error ) } ` , {
479463 function : 'handleRefreshReleaseFile'
480464 } )
481465
466+ progressBus . error (
467+ type == 'app'
468+ ? ProgressChannel . FN_RELEASE_APP_REFRESH
469+ : ProgressChannel . FN_RELEASE_CLIENT_REFRESH ,
470+ 'Error refreshing release file' ,
471+ handleError ( error ) ,
472+ 'Error Refreshing!'
473+ )
474+
482475 return prevReleaseFile
483476 }
484477}
0 commit comments