Symlinks in Windows come with a bunch of restrictions and edge-cases that make it hard for Volta to correctly determine the name of the tool that was called. A few of these include:
- Requiring Developer Mode - Creating symlinks requires elevated permissions if Developer Mode isn't enabled, which is a bad idea in general)
- Git Bash Oddities - Git Bash on Windows will fully resolve symlinks before calling the executable, so shims don't work because the information about what tool was actually called is lost.
We could possibly solve these problems by creating a small executable that we could actually copy with a new name when creating a shim. This executable would be responsible for determining the command (possible because it's actually an on-disk executable) and then passing control to the full Volta shim while passing information about the tool (possibly using an Environment Variable).
Symlinks in Windows come with a bunch of restrictions and edge-cases that make it hard for Volta to correctly determine the name of the tool that was called. A few of these include:
We could possibly solve these problems by creating a small executable that we could actually copy with a new name when creating a shim. This executable would be responsible for determining the command (possible because it's actually an on-disk executable) and then passing control to the full Volta shim while passing information about the tool (possibly using an Environment Variable).