@@ -128,7 +128,7 @@ export default defineCommand({
128128 }
129129 // #endregion
130130
131- // #region Deploy
131+ // #region Prepare deployment
132132 const distDir = join ( cwd , 'dist' )
133133 const storage = await getStorage ( distDir ) . catch ( ( err ) => {
134134 consola . error ( err . message . includes ( 'directory not found' ) ? `${ err . message } , please make sure that you have built your project.` : err . message )
@@ -147,7 +147,7 @@ export default defineCommand({
147147 spinnerColorIndex = ( spinnerColorIndex + 1 ) % spinnerColors . length
148148 } , 2500 )
149149
150- let deployment
150+ let deploymentKey , serverFiles , metaFiles
151151 try {
152152 const publicFiles = await getPublicFiles ( storage , pathsToDeploy )
153153
@@ -170,7 +170,8 @@ export default defineCommand({
170170 }
171171 } )
172172 spinner . succeed ( `${ colors . blueBright ( linkedProject . slug ) } ready to deploy.` )
173- const { deploymentKey, missingPublicHashes, cloudflareUploadJwt } = deploymentInfo
173+ const { missingPublicHashes, cloudflareUploadJwt } = deploymentInfo
174+ deploymentKey = deploymentInfo . deploymentKey
174175 const publicFilesToUpload = publicFiles . filter ( file => missingPublicHashes . includes ( file . hash ) )
175176
176177 if ( publicFilesToUpload . length ) {
@@ -189,21 +190,11 @@ export default defineCommand({
189190 consola . info ( `${ colors . blueBright ( formatNumber ( publicFiles . length ) ) } static assets (${ colors . blueBright ( prettyBytes ( totalSize ) ) } / ${ colors . blueBright ( prettyBytes ( totalGzipSize ) ) } gzip)` )
190191 }
191192
192- const metaFiles = await Promise . all ( pathsToDeploy . filter ( isMetaPath ) . map ( p => getFile ( storage , p , 'base64' ) ) )
193- const serverFiles = await Promise . all ( pathsToDeploy . filter ( isServerPath ) . map ( p => getFile ( storage , p , 'base64' ) ) )
193+ metaFiles = await Promise . all ( pathsToDeploy . filter ( isMetaPath ) . map ( p => getFile ( storage , p , 'base64' ) ) )
194+ serverFiles = await Promise . all ( pathsToDeploy . filter ( isServerPath ) . map ( p => getFile ( storage , p , 'base64' ) ) )
194195 const serverFilesSize = serverFiles . reduce ( ( acc , file ) => acc + file . size , 0 )
195196 const serverFilesGzipSize = serverFiles . reduce ( ( acc , file ) => acc + file . gzipSize , 0 )
196197 consola . info ( `${ colors . blueBright ( formatNumber ( serverFiles . length ) ) } server files (${ colors . blueBright ( prettyBytes ( serverFilesSize ) ) } / ${ colors . blueBright ( prettyBytes ( serverFilesGzipSize ) ) } gzip)...` )
197- spinner = ora ( `Deploying ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } ...` ) . start ( )
198- deployment = await $api ( `/teams/${ linkedProject . teamSlug } /projects/${ linkedProject . slug } /${ deployEnv } /deploy/complete` , {
199- method : 'POST' ,
200- body : {
201- deploymentKey,
202- git,
203- serverFiles,
204- metaFiles
205- } ,
206- } )
207198 } catch ( err ) {
208199 spinner . fail ( `Failed to deploy ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } .` )
209200 consola . debug ( err , err . data )
@@ -217,8 +208,6 @@ export default defineCommand({
217208 process . exit ( 1 )
218209 }
219210
220- spinner . succeed ( `Deployed ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } ...` )
221-
222211 if ( config . database ) {
223212 // #region Database migrations
224213 const remoteMigrationsSpinner = ora ( `Retrieving database migrations on ${ deployEnvColored } for ${ colors . blueBright ( linkedProject . slug ) } ...` ) . start ( )
@@ -268,14 +257,15 @@ export default defineCommand({
268257 migrationSpinner . succeed ( `Applied database migration ${ colors . blueBright ( migration ) } .` )
269258 }
270259 // #endregion
260+
271261 // #region Database queries
272262 const localQueries = fileKeys
273263 . filter ( fileKey => fileKey . startsWith ( 'database:queries:' ) && fileKey . endsWith ( '.sql' ) )
274264 . map ( fileKey => fileKey . replace ( 'database:queries:' , '' ) . replace ( '.sql' , '' ) )
275265
276266
277267 if ( localQueries . length ) {
278- const querySpinner = ora ( `Applying ${ colors . blueBright ( formatNumber ( localQueries . length ) ) } database queries...` ) . start ( )
268+ const querySpinner = ora ( `Applying ${ colors . blueBright ( formatNumber ( localQueries . length ) ) } database ${ localQueries . length === 1 ? 'query' : ' queries' } ...` ) . start ( )
279269 for ( const queryName of localQueries ) {
280270 const query = await storage . getItem ( `database/queries/${ queryName } .sql` )
281271
@@ -289,11 +279,36 @@ export default defineCommand({
289279 }
290280
291281 }
292- querySpinner . succeed ( `Applied ${ colors . blueBright ( formatNumber ( localQueries . length ) ) } database queries.` )
282+ querySpinner . succeed ( `Applied ${ colors . blueBright ( formatNumber ( localQueries . length ) ) } database ${ localQueries . length === 1 ? 'query' : ' queries' } .` )
293283 }
294284 // #endregion
295285 }
296286
287+ // #region Complete deployment
288+ spinner = ora ( `Deploying ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } ...` ) . start ( )
289+ const deployment = await $api ( `/teams/${ linkedProject . teamSlug } /projects/${ linkedProject . slug } /${ deployEnv } /deploy/complete` , {
290+ method : 'POST' ,
291+ body : {
292+ deploymentKey,
293+ git,
294+ serverFiles,
295+ metaFiles
296+ } ,
297+ } ) . catch ( ( err ) => {
298+ spinner . fail ( `Failed to deploy ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } .` )
299+ // Error with workers size limit
300+ if ( err . data ?. data ?. name === 'ZodError' ) {
301+ consola . error ( err . data . data . issues )
302+ }
303+ else if ( err . message . includes ( 'Error: ' ) ) {
304+ consola . error ( err . message . split ( 'Error: ' ) [ 1 ] )
305+ } else {
306+ consola . error ( err . message . split ( ' - ' ) [ 1 ] || err . message )
307+ }
308+ process . exit ( 1 )
309+ } )
310+ spinner . succeed ( `Deployed ${ colors . blueBright ( linkedProject . slug ) } to ${ deployEnvColored } ...` )
311+
297312 // Check DNS & ready url for first deployment
298313 consola . success ( `Deployment is ready at ${ colors . cyanBright ( deployment . primaryUrl || deployment . url ) } ` )
299314 if ( deployment . isFirstDeploy ) {
0 commit comments