code-server icon indicating copy to clipboard operation
code-server copied to clipboard

[Bug]: Not apparently possible to install multiple extensions from config file

Open tomqwpl opened this issue 2 years ago • 2 comments

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

tomqwpl avatar Apr 14 '23 08:04 tomqwpl

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.

code-asher avatar Apr 14 '23 17:04 code-asher

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.

code-asher avatar Apr 14 '23 17:04 code-asher