arduino/arduino-ide

Collect all temporary files in a temporary directory

sterretjeToo opened this issue · 4 comments

Describe the request

IDE 2.0 leaves a lot of directories files behind in (Windows system) C:\Users\yourUsername\AppData\Local\Temp. Request to collect them all in one dedicated Arduino directory.

If the cause is a virus scanner that prevents cleanup, it's safer to just exclude on directory instead of the complete directory.
If the cause is Windows or the IDE, it's easier to manually clean up at occasion.

Describe the current behavior

Directories and files that can be found in C:\Users\yourUsername\AppData\Local\Temp

Arduino IDE version

arduino-ide_nightly-20221217_Windows_64bit

Operating system

Windows

Operating system version

Win10 Home

Additional context

Above list from IDE 2.0.3; I haven't consistently used the nightly build to be sure if the list has not changed significantly but a number of the above directories and files are certainly there.

Additional Requests

Related

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the latest nightly build
  • My request contains all necessary details

This is a great idea. However, besides these, 👇 IDE2 does not create any files, but the CLI, the LS, the debugger, etc., manage them.

  • Files C:\Users\yourUsername\AppData\Local\Temp\.arduinoIDE-unsaved*.
  • Directories C:\Users\yourUsername\AppData\Local\Temp\longNumber\arduino-ide2-longHexNumber; directories are empty

@kittaakos and @per1234

As I don't know what is all involved, I'll leave it up to you guys to add similar feature requests for all the other applications in the tool chain ;)

I guess the .arduinoIDE-unsaved* is created by Arduino IDE?

/**
* Creates a temp folder and returns with a promise that resolves with the canonicalized absolute pathname of the newly created temp folder.
* This method ensures that the file-system path pointing to the new temp directory is fully resolved.
* For example, on Windows, instead of getting an [8.3 filename](https://en.wikipedia.org/wiki/8.3_filename), callers will get a fully resolved path.
* `C:\\Users\\KITTAA~1\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2022615-21100-iahybb.yyvh\\sketch_jul15a` will be `C:\\Users\\kittaakos\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2022615-21100-iahybb.yyvh\\sketch_jul15a`
*/
private createTempFolder(): Promise<string> {
return new Promise<string>((resolve, reject) => {
temp.mkdir({ prefix: TempSketchPrefix }, (createError, dirPath) => {
if (createError) {
reject(createError);
return;
}
realpath.native(dirPath, (resolveError, resolvedDirPath) => {
if (resolveError) {
reject(resolveError);
return;
}
resolve(resolvedDirPath);
});
});
});
}

In addition to the two classes of folders mentioned above, three others are created by the Arduino IDE application: