@@ -43,11 +43,20 @@ async function main() {
4343 const template = await templatePicker ( args . template , args [ 'no-telemetry' ] )
4444 const name = await namePicker ( maybeTargetDir )
4545
46- const targetDir = findAvailableDir ( maybeTargetDir ?? resolve ( process . cwd ( ) , name ) )
46+ const requestedTargetDir = maybeTargetDir ?? resolve ( process . cwd ( ) , name )
47+ const targetDir = findAvailableDir ( requestedTargetDir )
48+ if ( targetDir !== requestedTargetDir ) {
49+ nicelog (
50+ `${ relative ( process . cwd ( ) , requestedTargetDir ) } already exists, using ${ relative (
51+ process . cwd ( ) ,
52+ targetDir
53+ ) } instead.`
54+ )
55+ }
4756 mkdirSync ( targetDir , { recursive : true } )
4857
4958 await downloadTemplate ( template , targetDir )
50- await renameTemplate ( pathToName ( targetDir ) , targetDir )
59+ await renameTemplate ( name , targetDir )
5160
5261 const manager = getPackageManager ( )
5362 const doneMessage = [ 'Done! Now run:' , '' ]
@@ -142,10 +151,15 @@ async function namePicker(argOption?: string) {
142151function findAvailableDir ( targetDir : string ) : string {
143152 if ( isDirEmpty ( targetDir ) ) return targetDir
144153
145- for ( let i = 1 ; ; i ++ ) {
154+ const maxAttempts = 1000
155+ for ( let i = 1 ; i <= maxAttempts ; i ++ ) {
146156 const candidate = `${ targetDir } -${ i } `
147157 if ( isDirEmpty ( candidate ) ) return candidate
148158 }
159+
160+ throw new Error (
161+ `Could not find an available directory for ${ targetDir } after ${ maxAttempts } attempts.`
162+ )
149163}
150164
151165async function downloadTemplate ( template : Template , targetDir : string ) {
0 commit comments