Skip to content

Add detecting and tagging VSCode builds #384

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

ribafish
Copy link
Member

As proposed in the discovery doc, I've implemented supoprt for detecting and tagging builds triggered in VSCode. That includes "sync" builds, as well as regular builds, triggered via gradle-java VSCode extension.

Detection of VSCode builds is based on the VSCODE_PID env var, which we expect to always be set.

I will open similar PRs for other CCUD implementations once this is approved.

@ribafish ribafish requested a review from a team April 18, 2025 11:10
Copy link
Member

@clayburn clayburn left a comment

Choose a reason for hiding this comment

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

LGTM with one question

@@ -132,6 +134,8 @@ public void execute(BuildResultAdapter buildResult) {
tagIde("IntelliJ IDEA", props.get(SYSTEM_PROP_IDEA_VERSION).get());
} else if (props.get(SYSTEM_PROP_ECLIPSE_BUILD_ID).isPresent()) {
tagIde("Eclipse", props.get(SYSTEM_PROP_ECLIPSE_BUILD_ID).get());
} else if (props.get(ENV_VAR_VSCODE_PID).isPresent()) {
tagIde("VSCode", "");
Copy link
Member

Choose a reason for hiding this comment

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

Are we certain VSCode provides no version information that we can access?

Copy link
Member

@gabrielfeo gabrielfeo Apr 21, 2025

Choose a reason for hiding this comment

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

If Clay's suggestion is to register VS Code version information, I think the "Gradle for Java" extension version would also be relevant.

Copy link
Member Author

@ribafish ribafish Apr 22, 2025

Choose a reason for hiding this comment

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

That would all be great and all, but we don't have that info. Here is a scan with all the env vars, sys props, and proj props printed out (diff).. And no version information.

The VS Code I built this with is v 1.99.3, closest info I can find is VSCODE_IPC_HOOK, but I wouldn't base that info off a path, which can probably be changed in a future version / OS... plus, it doesn't even give us the full version.

As for the "Gradle for Java" extension, this was built with 3.16.4, which does appear in 4 places in the above scan, but it's always in a path, which can again probably be changed.

But if you can find either the VSCode version or the "Gradle for Java" extension version that's "stable", I'm all for it 😄 .

Copy link
Member

Choose a reason for hiding this comment

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

How about parsing code --version?

Copy link
Member

Choose a reason for hiding this comment

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

There's also code --list-extensions --show-versions for extensions.

Copy link
Member Author

Choose a reason for hiding this comment

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

@erichaagdev, are you sure that code is always set up for cli usage?

Copy link
Member

Choose a reason for hiding this comment

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

I wouldn't say "always", but I was under the impression it comes with the main app installation by default.

Copy link
Member

Choose a reason for hiding this comment

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

Visual Studio Code has a powerful command-line interface built-in that lets you control how you launch the editor. You can open files, install extensions, change the display language, and output diagnostics through command-line options (switches).

https://code.visualstudio.com/docs/configure/command-line

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, however:

Note: Users on macOS must first run a command (Shell Command: Install 'code' command in PATH) to add VS Code executable to the PATH environment variable. Read the macOS setup guide for help.

Windows and Linux installations should add the VS Code binaries location to your system path. If this isn't the case, you can manually add the location to the Path environment variable ($PATH on Linux). For example, on Windows, the default VS Code binaries location is AppData\Local\Programs\Microsoft VS Code\bin. To review platform-specific setup instructions, see Setup.

Insiders: If you are using the VS Code Insiders preview, you launch your Insiders build with code-insiders.

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm happy to add this and we can just do best effort here, if that's what we want to do. Perhaps best if we discuss it on our sync.

@@ -132,6 +134,8 @@ public void execute(BuildResultAdapter buildResult) {
tagIde("IntelliJ IDEA", props.get(SYSTEM_PROP_IDEA_VERSION).get());
} else if (props.get(SYSTEM_PROP_ECLIPSE_BUILD_ID).isPresent()) {
tagIde("Eclipse", props.get(SYSTEM_PROP_ECLIPSE_BUILD_ID).get());
} else if (props.get(ENV_VAR_VSCODE_PID).isPresent()) {
tagIde("VSCode", "");
Copy link
Member

@gabrielfeo gabrielfeo Apr 21, 2025

Choose a reason for hiding this comment

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

If Clay's suggestion is to register VS Code version information, I think the "Gradle for Java" extension version would also be relevant.

Co-authored-by: Gabriel Féo <[email protected]>
Signed-off-by: Gašper Kojek <[email protected]>
@ribafish ribafish requested review from gabrielfeo and clayburn April 22, 2025 08:58
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.

4 participants