@@ -317,6 +317,8 @@ def app_template_questions(
317317 if mode == "express" and not express_available :
318318 raise Exception ("Express mode not available for that template." )
319319
320+ dest_dir = directory_prompt (dest_dir , template_dir .name )
321+
320322 if mode is None and express_available :
321323 mode = questionary .select (
322324 "Would you like to use Shiny Express?" ,
@@ -334,8 +336,6 @@ def app_template_questions(
334336 use_template_internal ()
335337 return
336338
337- dest_dir = directory_prompt (template_dir , dest_dir )
338-
339339 app_dir = copy_template_files (
340340 dest_dir ,
341341 template_dir = template_dir ,
@@ -404,7 +404,7 @@ def js_component_questions(
404404 Path (__file__ ).parent / "templates/package-templates" / component_type
405405 )
406406
407- dest_dir = directory_prompt (template_dir , dest_dir )
407+ dest_dir = directory_prompt (dest_dir , package_name )
408408
409409 app_dir = copy_template_files (
410410 dest_dir ,
@@ -437,21 +437,32 @@ def js_component_questions(
437437
438438
439439def directory_prompt (
440- template_dir : Path , dest_dir : Optional [Path | str | None ] = None
440+ dest_dir : Optional [Path | str | None ] = None ,
441+ default_dir : Optional [str | None ] = None ,
441442) -> Path :
442443 if dest_dir is not None :
443- return Path (dest_dir )
444+ dest_dir = Path (dest_dir )
445+
446+ if dest_dir .exists () and dest_dir .is_file ():
447+ click .echo (
448+ cli_danger (
449+ f"Error: Destination directory { cli_field (str (dest_dir ))} is a file, not a directory."
450+ )
451+ )
452+ sys .exit (1 )
453+ return dest_dir
444454
445455 app_dir = questionary .path (
446456 "Enter destination directory:" ,
447- default = path_rel_wd (template_dir . name ) ,
457+ default = path_rel_wd (default_dir ) if default_dir is not None else "./" ,
448458 only_directories = True ,
449459 ).ask ()
450460
451461 if app_dir is None :
452462 sys .exit (1 )
453463
454- return Path (app_dir )
464+ # Perform not-a-file check on the selected `app_dir`
465+ return directory_prompt (dest_dir = app_dir )
455466
456467
457468def path_rel_wd (* path : str ):
0 commit comments