Skip to content

feat(ide/jetbrains): install JetBrains plugins#229

Merged
dubinsky merged 1 commit intoskevetter:mainfrom
dubinsky:install-jedtbrains-plugins
Jan 6, 2026
Merged

feat(ide/jetbrains): install JetBrains plugins#229
dubinsky merged 1 commit intoskevetter:mainfrom
dubinsky:install-jedtbrains-plugins

Conversation

@dubinsky
Copy link

@dubinsky dubinsky commented Jan 4, 2026

No description provided.

@dubinsky dubinsky force-pushed the install-jedtbrains-plugins branch 3 times, most recently from da4781d to ffec60f Compare January 4, 2026 05:01
@dubinsky dubinsky marked this pull request as draft January 4, 2026 05:17
@dubinsky dubinsky force-pushed the install-jedtbrains-plugins branch from ffec60f to ff6502d Compare January 5, 2026 23:30
@dubinsky dubinsky marked this pull request as ready for review January 5, 2026 23:31
@dubinsky dubinsky force-pushed the install-jedtbrains-plugins branch from ff6502d to 602354e Compare January 5, 2026 23:42

// Set the user installPluginCommand should run as
installPluginsCommand.SysProcAttr = &syscall.SysProcAttr{}
installPluginsCommand.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
Copy link
Author

@dubinsky dubinsky Jan 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@skevetter on Windows, I get an error here: syscall.SysProcAttr has no field or method Credential.

Any advice on how to deal with it is greatly appreciated ;)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done ;)

@dubinsky dubinsky force-pushed the install-jedtbrains-plugins branch from 602354e to 3979042 Compare January 6, 2026 01:11
@dubinsky dubinsky requested a review from skevetter January 6, 2026 01:37
@dubinsky
Copy link
Author

dubinsky commented Jan 6, 2026

@skevetter I noticed logging improvements (multi-line output etc.) - thank you!
I also notice that for log entries with fields there are now some spaces added between the date and the log level, and the number of these spaces seems proportional to the total length of the fields logged...

@dubinsky dubinsky changed the title feat: install JetBrains plugins feat(ide/jetbrains): install JetBrains plugins Jan 6, 2026
@skevetter skevetter requested a review from Copilot January 6, 2026 01:43
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for installing JetBrains IDE plugins from devcontainer.json configuration. The implementation allows users to specify plugins in the customizations.jetbrains.plugins section of their devcontainer configuration, which will then be automatically installed when the JetBrains IDE backend is set up.

Key changes:

  • Added plugin installation functionality to JetBrains IDE setup process
  • Introduced new configuration structure for JetBrains customizations (plugins)
  • Added platform-specific user credential handling for running plugin installation as the correct user

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
pkg/ide/jetbrains/generic.go Added plugin installation logic to the Install method, including user context handling and environment configuration
pkg/devcontainer/config/result.go Added GetJetBrainsConfiguration function to extract and merge JetBrains customizations from devcontainer config
pkg/devcontainer/config/config.go Added JetBrainsCustomizations struct to define the plugin configuration structure
pkg/command/credential_unsupported.go Added ForUser function (no-op) for Windows platform
pkg/command/credential_supported.go Added ForUser function to run commands as a specific user on Unix-like systems
cmd/agent/container/setup.go Updated all JetBrains IDE Install() method calls to pass setupInfo parameter

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Signed-off-by: Leonid Dubinsky <dub@podval.org>
@dubinsky dubinsky force-pushed the install-jedtbrains-plugins branch from 3979042 to ff5820b Compare January 6, 2026 02:01
Copy link
Owner

@skevetter skevetter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Don't worry too much about responding to all the comments if it is obvious. It mostly helps me when I am doing a lot of context switching.

log entries with fields there are now some spaces added between the date and the log level, and the number of these spaces seems proportional to the total length of the fields logged

I am still working on this and I am flexible to any feedback. I want the logs to quickly communicate what and where the issue occurred and any context that would save me time debugging the issue. Do you have an example of what you are describing?

@dubinsky
Copy link
Author

dubinsky commented Jan 6, 2026

log entries with fields there are now some spaces added between the date and the log level, and the number of these spaces seems proportional to the total length of the fields logged

I am still working on this and I am flexible to any feedback. I want the logs to quickly communicate what and where the issue occurred and any context that would save me time debugging the issue.

Thank you!

Do you have an example of what you are describing?

20:08:09 debug received line after pong
 line=ARM-false       tunnelserver.go:360
20:08:09 debug inject binary tunnelserver.go:360
20:08:09                  debug using current binary for agent injection
 path=/tmp/dub/devpod/agent arch=amd64 tunnelserver.go:360
20:08:09                                                                                   debug found runner binary for agent injection
 path=/tmp/dub/devpod/agent arch=amd64 url=https://github.com/skevetter/devpod/releases/latest/download tunnelserver.go:360
20:08:09 debug done injecting binary tunnelserver.go:360
20:08:09 debug done inject tunnelserver.go:360
20:08:09 debug done injecting tunnelserver.go:360
20:08:09 debug done InjectAgentAndExecute tunnelserver.go:360
20:08:09 debug Injected into container tunnelserver.go:360
20:08:09 info Setup container... tunnelserver.go:362
20:08:09                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               debug starting SSH tunnel execution
 workspaceCommand='/usr/local/bin/devpod' agent container setup --setup-info 'A REALLY LONG STRING' --chown-workspace --inject-git-credentials --debug addKeys=false sshCommand='/usr/local/bin/devpod' helper ssh-server --stdio --debug tunnelserver.go:360
20:08:09 debug done exec tunnelserver.go:360
20:08:09 debug attempting to create SSH client tunnelserver.go:360
20:08:09                                              debug inject and run command
 command='/usr/local/bin/devpod' helper ssh-server --stdio --debug tunnelserver.go:360
20:08:09 debug SSH client created tunnelserver.go:360
20:08:10 debug SSH session created tunnelserver.go:360
20:08:10                           debug forwarding SSH agent
 socket=/tmp/auth-agent2596516040/listener.sock tunnelserver.go:360

@dubinsky dubinsky merged commit ff853cd into skevetter:main Jan 6, 2026
35 checks passed
@dubinsky dubinsky deleted the install-jedtbrains-plugins branch January 6, 2026 02:31
@dubinsky
Copy link
Author

dubinsky commented Jan 6, 2026

@skevetter please consider enabling Settings | General | Pull Requests | Automatically delete head branches ;)

@skevetter
Copy link
Owner

skevetter commented Jan 6, 2026

Enabled

image

@dubinsky
Copy link
Author

dubinsky commented Jan 6, 2026

Enabled

Thanks!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants