@@ -85,6 +85,29 @@ async function reportMissingNonInteractiveArgs<T extends ArgsDef>(
8585 . join ( ', ' ) } `)
8686}
8787
88+ /**
89+ * Commands to print in the closing 'Next steps' box, in the order to run them.
90+ *
91+ * `dir` is relative to the current working directory, so `.` means the project
92+ * was created in place and there is nowhere to `cd` to.
93+ */
94+ export function getNextSteps ( options : {
95+ dir : string
96+ shell : boolean
97+ installFailure ?: unknown
98+ recoveryCommands : string [ ]
99+ packageManager : PackageManagerName
100+ } ) : string [ ] {
101+ const { dir, shell, installFailure, recoveryCommands, packageManager } = options
102+ const runCmd = packageManager === 'deno' ? 'task' : 'run'
103+ return [
104+ ! shell && dir !== '.' && `cd ${ dir } ` ,
105+ installFailure && `${ packageManager } install` ,
106+ ...recoveryCommands ,
107+ `${ packageManager } ${ runCmd } dev` ,
108+ ] . filter ( ( step ) : step is string => typeof step === 'string' )
109+ }
110+
88111export default defineCommand ( {
89112 meta : {
90113 name : 'init' ,
@@ -678,16 +701,13 @@ export default defineCommand({
678701 }
679702
680703 // Display next steps
681- const relativeTemplateDir = relative ( process . cwd ( ) , template . dir ) || '.'
682- const runCmd = selectedPackageManager === 'deno' ? 'task' : 'run'
683- const nextSteps = [
684- ! ctx . args . shell
685- && relativeTemplateDir . length > 1
686- && colors . cyan ( `cd ${ relativeTemplateDir } ` ) ,
687- installFailure && colors . cyan ( `${ selectedPackageManager } install` ) ,
688- ...recoveryCommands . map ( command => colors . cyan ( command ) ) ,
689- colors . cyan ( `${ selectedPackageManager } ${ runCmd } dev` ) ,
690- ] . filter ( Boolean )
704+ const nextSteps = getNextSteps ( {
705+ dir : relative ( process . cwd ( ) , template . dir ) || '.' ,
706+ shell : ! ! ctx . args . shell ,
707+ installFailure,
708+ recoveryCommands,
709+ packageManager : selectedPackageManager ,
710+ } ) . map ( step => colors . cyan ( step ) )
691711
692712 logger . message ( )
693713 writeWithGuide ( output => box ( `\n${ nextSteps . map ( step => ` › ${ step } ` ) . join ( '\n' ) } \n` , ` 👉 Next steps ` , {
0 commit comments