Parse a script line (in Pipfile’s [scripts] section).
This always works in POSIX mode, even on Windows.
Encode into a cmd-executable string.
This re-implements CreateProcess’s quoting logic to turn a list of arguments into one single string for the shell to interpret.
- All double quotes are escaped with a backslash.
- Existing backslashes before a quote are doubled, so they are all escaped properly.
- Backslashes elsewhere are left as-is; cmd will interpret them literally.
The result is then quoted into a pair of double quotes to be grouped.
An argument is intentionally not quoted if it does not contain whitespaces. This is done to be compatible with Windows built-in commands that don’t work well with quotes, e.g. everything with echo, and DOS-style (forward slash) switches.
The intended use of this function is to pre-process an argument list before passing it into