Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggestion: about temporary file #338

Open
Xeonacid opened this issue Aug 4, 2018 · 24 comments
Open

Suggestion: about temporary file #338

Xeonacid opened this issue Aug 4, 2018 · 24 comments

Comments

@Xeonacid
Copy link

Xeonacid commented Aug 4, 2018

Currently, after running selected code in Code Runner, it leaves a temporary file with the name set in code-runner.temporaryFileName in working dir. If we don't need that any more, we have to remove it manually.
What about adding a setting about whether the temporary file would be removed automatically after running?

@formulahendry
Copy link
Owner

Are you running it in terminal? If not in terminal, it should be removed.

@Xeonacid
Copy link
Author

Xeonacid commented Aug 4, 2018

@formulahendry Yeah, I'm running it in terminal.

@formulahendry
Copy link
Owner

OK, for now, you could customize the code-runner.executorMap by yourself.

@Xeonacid
Copy link
Author

Xeonacid commented Aug 4, 2018

@formulahendry Could you give an example?

@formulahendry
Copy link
Owner

@Xeonacid
Copy link
Author

Xeonacid commented Aug 4, 2018

@formulahendry I've read this, but sorry for that I have no idea about how to determine whether it's running a temporary file. 😢 Could it read the code-runner.temporaryFileName variable? I would really appreciate it if you could give a little example...
BTW, the code-runner.executorMap is separate settings for each language. Does it have any possible to set globally?

@formulahendry
Copy link
Owner

You could just use $fullFileName or $fileName, e.g. `"python": "python $fullFileName && del $fullFileName". And, currently it is no support to set globally.

@Xeonacid
Copy link
Author

Xeonacid commented Aug 4, 2018

@formulahendry Thanks a lot, but... this would make an unconditional removal, whether it's the temporary file created by running selected code or not. TAT

@formulahendry
Copy link
Owner

Oh... You are right...

@formulahendry
Copy link
Owner

Or just use something like "python": "python $fullFileName && del tempCodeRunnerFile.py"

@Xeonacid
Copy link
Author

Xeonacid commented Aug 4, 2018

@formulahendry Thanks! (To be honest, I've been using in this way before opening this issue :P
It would be grateful if you could implement a global setting as mentioned above, and/or make variables like the code-runner.temporaryFileName visiable in the code-runner.executorMap!

@filipesilva
Copy link

I was also trying to find a workaround/solution for this situation. I can do && rm tempCodeRunnerFile.js for now though, that's fine enough. But it would be a cool option. Thanks for your work!

@filipesilva
Copy link

filipesilva commented Feb 23, 2019

For those interested, this is how my executorMap looks like for the languages I use:

  "code-runner.executorMap": {
    "javascript": "node $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.js",
    "typescript": "ts-node $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.cljs",
    "clojure": "lumo $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.cljs",
  },

Notes:

  • I am on Windows, using GitBash, and running on terminal.
  • the -f flag is needed to prevent rm: cannot remove 'path/here': No such file or directory when running the real file (without a selection).
  • using $dirWithoutTrailingSlash is needed because the path is surrounded by quotes and the final slash on windows will escape the quote.
  • double escaped slashes (\\\\) are needed otherwise it will end up as \tempCodeRunnerFile, and \t means escape t.
  • will not delete the file if code execution fails.

It works but there are a few things to keep in mind when doing it manually.

@mil1i
Copy link

mil1i commented Mar 22, 2019

It is not deleting the temp files for me whether it is run in Output or Terminal. They always persist. Doesn't matter which language either.

In order for them to delete, I must use the mappings like above with a 'rm tempCodeRunnerFile.' command at the end.

@tgreen7
Copy link

tgreen7 commented Mar 31, 2019

also not getting removed for me with or without "Run in Terminal"

@cherry-geqi
Copy link

Why not just create those temp files in system temp dir?

@filipesilva
Copy link

@cherry-geqi the file system environment often matters even for snippets. Mostly for imports, but sometimes for global definitions.

@cherry-geqi
Copy link

cherry-geqi commented Apr 11, 2019

As far as I know, many executors accept scripts from stdin.
Instead

node /path/to/script.js

We can

node < /path/to/script.js

This will avoid the env issues.

@filipesilva
Copy link

That's a great idea!

@Xeonacid
Copy link
Author

@cherry-geqi Sounds good, but it's not a robust way...

@dadoirie
Copy link

For those interested, this is how my executorMap looks like for the languages I use:

  "code-runner.executorMap": {
    "javascript": "node $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.js",
    "typescript": "ts-node $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.cljs",
    "clojure": "lumo $fullFileName && rm -f $dirWithoutTrailingSlash\\\\tempCodeRunnerFile.cljs",
  },

Notes:

  • I am on Windows, using GitBash, and running on terminal.
  • the -f flag is needed to prevent rm: cannot remove 'path/here': No such file or directory when running the real file (without a selection).
  • using $dirWithoutTrailingSlash is needed because the path is surrounded by quotes and the final slash on windows will escape the quote.
  • double escaped slashes (\\\\) are needed otherwise it will end up as \tempCodeRunnerFile, and \t means escape t.
  • will not delete the file if code execution fails.

It works but there are a few things to keep in mind when doing it manually.

I know it's a bit late, but since this issue is still open ...
this isn't working for me - also windows btw
Remove-Item: Parameter cannot be processed because the parameter name 'f' is ambiguous. Possible matches include: -Filter -Force.

therefore tinkered a bit around and made this work:
"javascript": "clear && node $fullFileName && rm $fullFileName"
using clear because getting PS C:\Projects\vscodium\time table> node "c:\Projects\vscodium\time table\public\js\tempCodeRunnerFile.js" ; if ($?) { rm "c:\Projects\vscodium\time table\public\js\tempCodeRunnerFile.js" } before the output - haven't yet figured out how to remove this, but clear does the job - would be nice tho having an another solution - so I can scroll and check the previous outputs

@AMMullan
Copy link

AMMullan commented Dec 8, 2022

Amazing that not more people are complaining about this - I had no idea what was generating these files and finally Googled the filename. There should definitely be an option to delete the temporary file if running via a console - temporary files are just that so why keep them after executing?

@DigDogData
Copy link

Following up on filipesilva's answer above, anyone facing this issue on linux and running on terminal may try this:

  "code-runner.executorMap": {
    "javascript": "node $fullFileName && rm -f $dirWithoutTrailingSlash\ttempCodeRunnerFile.js",
    "python": "python $fullFileName && rm -f $dirWithoutTrailingSlash\ttempCodeRunnerFile.py",
    "typescript": "ts-node $fullFileName && rm -f $dirWithoutTrailingSlash\ttempCodeRunnerFile.cljs",
    "clojure": "lumo $fullFileName && rm -f $dirWithoutTrailingSlash\ttempCodeRunnerFile.cljs",
  },

@ericchase
Copy link

sorry to necro, but i didn't like the above solutions, so i forked the project and changed a few lines to allow entire paths for the Temporary File Name setting, and also removed the quotes from all customized parameters

if anyone is interested: https://github.com/ericchase/fork--vscode-code-runner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants