@@ -10,6 +10,7 @@ const http = require("http");
10
10
const fetch = require ( "node-fetch" ) ;
11
11
const cp = require ( "child_process" ) ;
12
12
const { createAddon } = require ( "netlify/src/addons" ) ;
13
+ const ora = require ( "ora" ) ;
13
14
14
15
const templatesDir = path . resolve ( __dirname , "../../functions-templates" ) ;
15
16
@@ -346,9 +347,12 @@ async function scaffoldFromTemplate(flags, args, functionsDir) {
346
347
fs . unlinkSync ( path . join ( functionPath , ".netlify-function-template.js" ) ) ;
347
348
// npm install
348
349
if ( hasPackageJSON ) {
349
- this . log ( `installing dependencies for ${ name } ...` ) ;
350
+ const spinner = ora ( {
351
+ text : `installing dependencies for ${ name } ` ,
352
+ spinner : "moon"
353
+ } ) . start ( ) ;
350
354
await installDeps ( functionPath ) ;
351
- this . log ( `installing dependencies for ${ name } complete `) ;
355
+ spinner . succeed ( `installed dependencies for ${ name } `) ;
352
356
}
353
357
354
358
installAddons . call ( this , addons , path . resolve ( functionPath ) ) ;
@@ -367,24 +371,43 @@ async function installAddons(addons = [], fnPath) {
367
371
) ;
368
372
return false ;
369
373
}
374
+ console . log ( "checking Netlify APIs..." ) ;
375
+
370
376
return api . getSite ( { siteId } ) . then ( async siteData => {
371
377
const accessToken = await this . authenticate ( ) ;
372
378
const arr = addons . map ( ( { addonName, addonDidInstall } ) => {
373
- this . log ( "installing addon: " + addonName ) ;
379
+ console . log ( "installing addon: " + addonName ) ;
374
380
// will prompt for configs if not supplied - we do not yet allow for addon configs supplied by `netlify functions:create` command and may never do so
375
381
return createSiteAddon (
376
382
accessToken ,
377
383
addonName ,
378
384
siteId ,
379
385
siteData ,
380
386
this . log
381
- ) . then ( async addonCreateMsg => {
382
- if ( addonCreateMsg && addonDidInstall ) {
383
- const { addEnvVarsFromAddons } = require ( "../../utils/dev-exec" ) ;
384
- await addEnvVarsFromAddons ( site , accessToken ) ;
385
- addonDidInstall ( fnPath ) ;
386
- }
387
- } ) ;
387
+ )
388
+ . then ( async addonCreateMsg => {
389
+ if ( addonCreateMsg ) {
390
+ // spinner.success("installed addon: " + addonName);
391
+ if ( addonDidInstall ) {
392
+ const {
393
+ addEnvVarsFromAddons
394
+ } = require ( "../../utils/dev-exec" ) ;
395
+ await addEnvVarsFromAddons ( site , accessToken ) ;
396
+ const { confirmPostInstall } = await inquirer . prompt ( [
397
+ {
398
+ type : "confirm" ,
399
+ name : "confirmPostInstall" ,
400
+ message : `This template has an optional setup script that runs after addon install. This can be helpful for first time users to try out templates. Run the script?` ,
401
+ default : false
402
+ }
403
+ ] ) ;
404
+ if ( confirmPostInstall ) addonDidInstall ( fnPath ) ;
405
+ }
406
+ }
407
+ } )
408
+ . catch ( err => {
409
+ console . error ( "Error installing addon: " , err ) ;
410
+ } ) ;
388
411
} ) ;
389
412
return Promise . all ( arr ) ;
390
413
} ) ;
0 commit comments