[Bug]: Not apparently possible to install multiple extensions from config file
Is there an existing issue for this?
- [X] I have searched the existing issues
OS/Web Information
- Web Browser:
- Local OS: Windows
- Remote OS: Linux
- Remote Architecture: amd64
code-server --version: 4.10.1
Steps to Reproduce
Attempting to run code-server with a config file such as:
install-extension:
- extension.number1
- extension.number2
This fails with (e.g):
Installing extensions...
Extension 'ms-python.python,ms-vscode.makefile-tools' not found.
Make sure you use the full extension ID, including the publisher, e.g.: ms-dotnettools.csharp
Failed Installing Extensions: ms-python.python,ms-vscode.makefile-tools
The problem seems to be in the conversion of the config file into command line arguments:
const configFileArgv = Object.entries(config).map(([optName, opt]) => {
if (opt === true) {
return `--${optName}`
}
return `--${optName}=${opt}`
})
My guess is that there "opt" is a []string, so it ends up constructing "--install-extension=extension.number1,extension.number2"
Expected
Both extensions should be installed in the same way as if multiple install-extension command line arguments were passed
Actual
code-server errors on startup.
Logs
No response
Screenshot/Video
No response
Does this issue happen in VS Code or GitHub Codespaces?
- [X] I cannot reproduce this in VS Code.
- [X] I cannot reproduce this in GitHub Codespaces.
Are you accessing code-server over HTTPS?
- [X] I am using HTTPS.
Notes
No response
Oh right the parser expects the flag to repeat --install-extension <id> --install-extension <id> but duplicated keys are not possible in yaml. We should support splitting on commas for sure.
Although maybe just handling arrays in configFileArgv would be better. Comma split would be nice since then we could use it on the command line as well since the repeating flag syntax is a bit unwieldy.