@@ -145,18 +145,34 @@ func createUpgradeCommand(
145145 return fmt .Errorf ("failed to get current working directory: %w" , err )
146146 }
147147
148- // Create temporary directory for cloning the template
149- tempDir , err := os . MkdirTemp ( "" , "devkit-template-upgrade-* " )
150- if err != nil {
151- return fmt .Errorf ("failed to create temporary directory : %w" , err )
148+ // Ensure parent exists
149+ tempParent := filepath . Join ( absProjectPath , "temp_external " )
150+ if err := os . MkdirAll ( tempParent , 0o755 ); err != nil {
151+ return fmt .Errorf ("failed to create %s : %w" , tempParent , err )
152152 }
153- defer os .RemoveAll (tempDir ) // Clean up on exit
154153
155- tempCacheDir , err := os .MkdirTemp ("" , "devkit-template-cache-*" )
154+ // Create run-specific temp dir inside tempParent
155+ tempDir , err := os .MkdirTemp (tempParent , ".tmp-devkit-template-upgrade-*" )
156156 if err != nil {
157- return fmt .Errorf ("failed to create temporary cache directory: %w" , err )
157+ return fmt .Errorf ("failed to create temporary directory: %w" , err )
158158 }
159- defer os .RemoveAll (tempCacheDir ) // Clean up on exit
159+
160+ // Remove tempParent if it is empty after tempDir cleanup
161+ defer func () {
162+ err = os .RemoveAll (tempDir )
163+ if err != nil {
164+ logger .Warn ("failed to remove %s: %v\n " , tempDir , err )
165+ }
166+ entries , err := os .ReadDir (tempParent )
167+ if err != nil {
168+ logger .Warn ("could not read %s: %v\n " , tempParent , err )
169+ }
170+ if len (entries ) == 0 {
171+ if err := os .Remove (tempParent ); err != nil {
172+ logger .Warn ("failed to remove %s: %v\n " , tempParent , err )
173+ }
174+ }
175+ }()
160176
161177 logger .Info ("Upgrading project template:" )
162178 logger .Info (" Project: %s" , projectName )
0 commit comments