Skip to content

Commit 969fdc6

Browse files
MohamedAklamaashanonpranauditclaude
authored
JetBrains detector: name IdeaIE/Aqua, skip non-IDE client folders (#211) (#212)
* JetBrains detector: name IdeaIE/Aqua, skip non-IDE client folders Add IdeaIE (IntelliJ IDEA Educational) and Aqua to IDE_NAME_MAPPING so they report clean names with versions stripped instead of raw folder names like IdeaIE2022.2 / Aqua2024.1. Align macOS and Linux SKIP_FOLDERS with Windows to exclude the JetBrainsClient remote-dev thin client and consent/DeviceId folders, which are not IDEs and were surfacing as phantom tool rows. * Treat IntelliJ IDEA Educational (IdeaIE) as a free edition _detect_plan only recognized IdeaIC/PyCharmCE as free, so IdeaIE installs were tagged Licensed. IDEA Educational is free; add it to the free-edition check across all three OS detectors. Aqua is a paid product, so Licensed remains correct for it. --------- Co-authored-by: NandaPranesh <106886030+anonpran@users.noreply.github.com> Co-authored-by: audit <audit@local> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent d0db1e3 commit 969fdc6

3 files changed

Lines changed: 16 additions & 6 deletions

File tree

scripts/coding_discovery_tools/linux/jetbrains/jetbrains.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class LinuxJetBrainsDetector(BaseToolDetector):
2525
IDE_NAME_MAPPING = {
2626
"IntelliJIdea": "IntelliJ IDEA",
2727
"IdeaIC": "IntelliJ IDEA Community",
28+
"IdeaIE": "IntelliJ IDEA Educational",
29+
"Aqua": "Aqua",
2830
"PyCharm": "PyCharm",
2931
"PyCharmCE": "PyCharm Community",
3032
"WebStorm": "WebStorm",
@@ -38,7 +40,10 @@ class LinuxJetBrainsDetector(BaseToolDetector):
3840
"DataSpell": "DataSpell",
3941
}
4042

41-
SKIP_FOLDERS = {"consentOptions", "PrivacyPolicy", "Toolbox"}
43+
SKIP_FOLDERS = {
44+
"consent", "DeviceId", "JetBrainsClient",
45+
"consentOptions", "PrivacyPolicy", "Toolbox",
46+
}
4247

4348
PLUGIN_NAME_OVERRIDES = {
4449
"ml-llm": "JetBrains AI Assistant",
@@ -149,7 +154,7 @@ def _parse_ide_name_and_version(self, folder_name: str) -> tuple:
149154

150155
@staticmethod
151156
def _detect_plan(folder_name: str) -> str:
152-
if "IdeaIC" in folder_name or "PyCharmCE" in folder_name:
157+
if "IdeaIC" in folder_name or "IdeaIE" in folder_name or "PyCharmCE" in folder_name:
153158
return "Free"
154159
return "Licensed"
155160

scripts/coding_discovery_tools/macos/jetbrains/jetbrains.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class MacOSJetBrainsDetector(BaseToolDetector):
2727
IDE_NAME_MAPPING = {
2828
"IntelliJIdea": "IntelliJ IDEA",
2929
"IdeaIC": "IntelliJ IDEA Community",
30+
"IdeaIE": "IntelliJ IDEA Educational",
31+
"Aqua": "Aqua",
3032
"PyCharm": "PyCharm",
3133
"PyCharmCE": "PyCharm Community",
3234
"WebStorm": "WebStorm",
@@ -42,6 +44,7 @@ class MacOSJetBrainsDetector(BaseToolDetector):
4244

4345
# Folders to skip when scanning JetBrains directory
4446
SKIP_FOLDERS = {
47+
"consent", "DeviceId", "JetBrainsClient",
4548
"consentOptions", "PrivacyPolicy", "Toolbox",
4649
}
4750

@@ -193,8 +196,8 @@ def _parse_ide_name_and_version(self, folder_name: str) -> tuple:
193196

194197
@staticmethod
195198
def _detect_plan(folder_name: str) -> str:
196-
"""Return 'Free' for Community editions, 'Licensed' otherwise."""
197-
if "IdeaIC" in folder_name or "PyCharmCE" in folder_name:
199+
"""Return 'Free' for Community/Educational editions, 'Licensed' otherwise."""
200+
if "IdeaIC" in folder_name or "IdeaIE" in folder_name or "PyCharmCE" in folder_name:
198201
return "Free"
199202
return "Licensed"
200203

scripts/coding_discovery_tools/windows/jetbrains/jetbrains.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ def jetbrains_local_dir(self) -> Path:
6464
IDE_NAME_MAPPING = {
6565
"IntelliJIdea": "IntelliJ IDEA",
6666
"IdeaIC": "IntelliJ IDEA Community",
67+
"IdeaIE": "IntelliJ IDEA Educational",
68+
"Aqua": "Aqua",
6769
"PyCharm": "PyCharm",
6870
"PyCharmCE": "PyCharm Community",
6971
"WebStorm": "WebStorm",
@@ -241,8 +243,8 @@ def _detect_plan(self, folder_name: str, local_dir: Path) -> str:
241243
"""
242244
Detect plan type by checking folder name and idea.log.
243245
"""
244-
# Check folder name for community edition markers
245-
if "IdeaIC" in folder_name or "PyCharmCE" in folder_name:
246+
# Check folder name for community/educational edition markers
247+
if "IdeaIC" in folder_name or "IdeaIE" in folder_name or "PyCharmCE" in folder_name:
246248
return "Community"
247249

248250
log_file = local_dir / folder_name / "log" / "idea.log"

0 commit comments

Comments
 (0)