Skip to content
Open
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
0b29ef2
IEP-1334: EIM Integration (#1116)
alirana01 Apr 24, 2025
afc239b
fixes after merge
alirana01 May 7, 2025
0f5621f
IEP-1516: Automatic update to IDE with filewatcher (#1210)
alirana01 Jun 10, 2025
81bb9bb
IEP 1517: Handling case for conversion of existing json file to eim_i…
alirana01 Jun 10, 2025
538a66b
IEP-1529: Fix for system python executable (#1239)
alirana01 Jun 16, 2025
332994c
IEP-1555: Removed python dependencies installation (#1254)
alirana01 Jun 18, 2025
9da1c46
IEP-1554: Launch and Download EIM (#1251)
alirana01 Jul 1, 2025
6ad37c2
feat: made the Esp-idf setup msg more informative (#1258)
sigmaaa Jul 1, 2025
ca54118
IEP-1577: Eim default directory added based on documentation (#1261)
alirana01 Jul 1, 2025
7815f53
IEP-1557: Documentation for the ESP-IDF Manager (#1257)
alirana01 Jul 2, 2025
4102d87
doc updated and image fixed
alirana01 Jul 2, 2025
d43873b
image fixed
alirana01 Jul 2, 2025
23fc2cc
image fixed
alirana01 Jul 2, 2025
25e7396
possible syntax fix
alirana01 Jul 2, 2025
3c9942b
another fix
alirana01 Jul 2, 2025
2f1daa5
fixing imaage name
alirana01 Jul 2, 2025
e0dbae4
added file to correct directory
alirana01 Jul 2, 2025
041f5c6
doc update
alirana01 Jul 2, 2025
feaf021
IEP-1585: Fixed eim old config import handling (#1263)
alirana01 Jul 4, 2025
1aeffb9
IEP-1584 Avoid Simultaneous Modals on Old Config Detection (#1264)
sigmaaa Jul 7, 2025
ffa51f2
IEP-1583: Closing old editor window when old workspace is found (#1262)
alirana01 Jul 9, 2025
94261e5
fix: fixed exception and added loggin when eim.json is missing (#1270)
sigmaaa Jul 14, 2025
0da63e9
IEP-1596 Handle Redundant File Watcher Events for eim_idf.json (#1267)
sigmaaa Jul 14, 2025
6f24401
fix: remove redundant closeWelcomePage (#1268)
sigmaaa Jul 14, 2025
1c9dd6e
IEP-1602 Prevent Exception When EIM Closes Before eim.json Is Created…
sigmaaa Jul 15, 2025
df056df
IEP-1590: autoimport of old configuration (#1275)
alirana01 Jul 24, 2025
c3356ed
fix: bump version to v4.0.0 (#1282)
kolipakakondal Jul 29, 2025
ec302ba
fix: update the tags for beta versions
kolipakakondal Jul 29, 2025
d359c54
fix: code cleanup
kolipakakondal Jul 29, 2025
dd38dcd
fix: update CI workflow regex patterns to support v4.0.0-beta.1 tags
kolipakakondal Jul 29, 2025
53dc8f3
fix: correct keystore file path in CI workflow
kolipakakondal Jul 29, 2025
a8da9bb
Revert "fix: correct keystore file path in CI workflow"
kolipakakondal Jul 29, 2025
dcf7e43
fix: regex issue with the tags
kolipakakondal Jul 29, 2025
95b54e7
merge issues fixed
alirana01 Sep 15, 2025
715e958
ci esp-idf version updated
alirana01 Sep 15, 2025
f565735
IEP-1603: version handling for json file from eim (#1276)
alirana01 Sep 24, 2025
56834a6
bug fix after rebase (#1342)
alirana01 Nov 10, 2025
d264866
docs: Provide CN translation for three docs (#1341)
Shen7436 Nov 12, 2025
7f3e49f
Merge master to v4.0.0 branch (#1351)
kolipakakondal Nov 19, 2025
4b1b87e
docs: Provide CN translation for several docs (#1344)
Shen7436 Nov 20, 2025
222cf77
docs: Provide CN translation for two docs (#1347)
Shen7436 Nov 20, 2025
9f0cd90
docs: Provide CN translation for two docs (#1352)
Shen7436 Nov 20, 2025
3ae9b40
docs: Provide CN translation for four docs (#1349)
Shen7436 Nov 20, 2025
1c88697
docs: Provide CN translation for three additionalfeatures docs (#1359)
Shen7436 Nov 27, 2025
8c628ac
docs: Provide CN translation for 3 additionalfeatures docs (#1357)
Shen7436 Nov 27, 2025
3178087
docs: Provide CN translation for three docs (#1348)
Shen7436 Nov 27, 2025
5dade7f
docs: Provide CN translation for appleveltracing.rst (#1353)
Shen7436 Nov 27, 2025
5c3a995
docs: Provide CN translation for two docs (#1345)
Shen7436 Nov 27, 2025
e24f01d
feat: update lsp4e dependency (#1350)
sigmaaa Nov 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 18 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,31 @@ name: Java CI with Maven

on:
push:
branches: [ master ]
branches:
- master
- release/**
pull_request:
branches: [ master ]
branches:
- master
- release/**

jobs:
build:
build_linux:

runs-on:
- self-hosted
- eclipse
- BrnoUBU0004
runs-on: [self-hosted, eclipse, BrnoUBU0004]

steps:
- uses: actions/checkout@v2

- name: Clone IDF Release From Github
uses: actions/checkout@v2
with:
repository: espressif/esp-idf
path: dependencies/idf-tools
submodules: 'true'
ref: release/v5.4
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.10'
python-version: '3.10'

Comment on lines 25 to +28
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

setup-python@v2 is deprecated on GH runners.

Upgrade to v5 to avoid Node runtime breakage.

-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v5
       with:
         python-version: '3.10'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uses: actions/setup-python@v2
with:
python-version: '3.10'
python-version: '3.10'
uses: actions/setup-python@v5
with:
python-version: '3.10'
🧰 Tools
🪛 actionlint (1.7.7)

25-25: the runner of "actions/setup-python@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 25 to 28, the workflow uses the
deprecated actions/setup-python@v2; update the action to actions/setup-python@v5
to avoid Node runtime breakage on GH runners, keeping the same inputs (e.g.,
python-version: '3.10') and update any syntax if required by v5 release notes
before committing.

- name: Install ESP-IDF via eim
uses: espressif/install-esp-idf-action@v1
with:
version: 'v5.4'
Comment on lines +29 to +32
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix YAML syntax error: remove tab character from step name.

Line 29 contains a tab character (\t) after the step name, which breaks YAML parsing. Replace with spaces.

-    - name: Install ESP-IDF via eim		
+    - name: Install ESP-IDF via eim
       uses: espressif/install-esp-idf-action@v1
       with:
         version: 'v5.4'

The functional change (EIM-driven ESP-IDF v5.4 installation) is good and aligns with the v4.0 release objectives. After fixing the syntax error, this step will replace the legacy manual cloning approach.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Install ESP-IDF via eim
uses: espressif/install-esp-idf-action@v1
with:
version: 'v5.4'
- name: Install ESP-IDF via eim
uses: espressif/install-esp-idf-action@v1
with:
version: 'v5.4'
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 29-29: syntax error: found character '\t' that cannot start any token

(syntax)

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 29 to 32, the step name line contains a
tab character after "Install ESP-IDF via eim" which breaks YAML parsing; replace
the tab with spaces so the "name:" value is a normal string, ensure all
indentation in this step uses spaces (not tabs), then save and re-run a YAML
lint/CI to confirm the file parses correctly.


- name: Set up Maven
uses: stCarolas/setup-maven@v5
Expand All @@ -42,8 +40,9 @@ jobs:
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

distribution: 'temurin'
cache: 'maven'

- name: Build with Maven
run: export NO_AT_BRIDGE=1 && mvn clean verify -Djarsigner.skip=true -DskipTests=false -DtestWorkspace=/opt/actions-runner/_work/workspace

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
- "v[0-9]+\\.[0-9]+\\.[0-9]+-beta"
- "v[0-9]+.[0-9]+.[0-9]+-beta.*"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Tag pattern is regex-like but GHA uses glob — will not match.

Use glob patterns; “+” and “.” aren’t regex here. This won’t trigger on beta tags.

Apply:

   push:
     tags:
-      - "v[0-9]+.[0-9]+.[0-9]+"
-      - "v[0-9]+.[0-9]+.[0-9]+-beta.*"
+      - "v*.*.*"
+      - "v*.*.*-beta*"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- "v[0-9]+.[0-9]+.[0-9]+-beta.*"
push:
tags:
- "v*.*.*"
- "v*.*.*-beta*"
🤖 Prompt for AI Agents
In .github/workflows/ci_release.yml around line 7, the tag pattern uses regex
syntax ("v[0-9]+.[0-9]+.[0-9]+-beta.*") but GitHub Actions expects a glob, so it
won't match beta tags; replace the regex with a glob such as
"v[0-9]*.[0-9]*.[0-9]*-beta*" (or the simpler "v*.*.*-beta*") to use * instead
of + and ensure proper matching of beta tags.


env:
ARCHIVE_PREFIX: com.espressif.idf.update-
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/ci_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@ name: Java CI with Maven on Windows

on:
push:
branches: [ master ]
branches:
- master
- release/**
pull_request:
branches: [ master ]
branches:
- master
- release/**

jobs:
build_windows:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
# Update the path to include them and run.
cd ./docs
PATH=/home/runner/.local/bin:$PATH pip3 install -r requirements.txt --prefer-binary
PATH=/home/runner/.local/bin:$PATH SPHINXOPTS="-W" build-docs -l en
PATH=/home/runner/.local/bin:$PATH SPHINXOPTS="-W" build-docs
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Inconsistent language flag handling across build steps.

Line 41 removes the -l en language flag from build-docs, but line 65 retains it. This inconsistency could cause the build step and the deploy step to produce different outputs. Clarify whether both steps should use the same invocation or if the different flag usage is intentional.

Also applies to: 65-65


🏁 Script executed:

#!/bin/bash
# Examine the workflow file to verify the language flag inconsistency
cat .github/workflows/docs_build.yml | head -80 | tail -45

Length of output: 1800


🏁 Script executed:

#!/bin/bash
# Get specific lines around 41 and 65 with context
echo "=== Context around line 41 ==="
sed -n '35,50p' .github/workflows/docs_build.yml

echo -e "\n=== Context around line 65 ==="
sed -n '60,70p' .github/workflows/docs_build.yml

Length of output: 1160


🏁 Script executed:

#!/bin/bash
# Search for all build-docs invocations in the file
echo "=== All build-docs invocations ==="
grep -n "build-docs" .github/workflows/docs_build.yml

Length of output: 165


Inconsistent language flag handling is confirmed; clarify intent or standardize both invocations.

The -l en flag was removed from line 41 (build-docs without flag) but retained at line 65 (build-docs -l en). Since line 41 builds the docs for testing and line 65 builds before deployment to the preview server, this inconsistency means the tested build differs from the deployed build. Either both steps should use the same invocation, or document why the flags differ.

Also applies to: 65-65

🤖 Prompt for AI Agents
In .github/workflows/docs_build.yml around lines 41 and 65, the build-docs
invocation is inconsistent (line 41 calls "build-docs" while line 65 calls
"build-docs -l en"); make them consistent by either adding "-l en" to the line
41 step or removing "-l en" from line 65 so the tested and deployed builds
match, or if the difference is intentional, add a clear comment above each step
explaining the reason for the differing language flag; update both lines
accordingly so the workflow is unambiguous.

- name: Archive Docs
uses: actions/upload-artifact@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
echo "PIP install requirements..."
pip3 install --user -r ./docs/requirements.txt
echo "Building the Docs..."
cd ./docs && build-docs -l en
cd ./docs && build-docs
echo "Deploy the Docs..."
export DOCS_BUILD_DIR=$GITHUB_WORKSPACE/docs/
cd $GITHUB_WORKSPACE/docs
Expand Down
2 changes: 1 addition & 1 deletion bundles/com.espressif.idf.branding/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.espressif.idf.branding;singleton:=true
Bundle-Version: 3.7.0.qualifier
Bundle-Version: 4.0.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-17
2 changes: 2 additions & 0 deletions bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,10 @@ Export-Package: com.espressif.idf.core,
com.espressif.idf.core.resources,
com.espressif.idf.core.toolchain,
com.espressif.idf.core.tools,
com.espressif.idf.core.tools.exceptions,
com.espressif.idf.core.tools.util,
com.espressif.idf.core.tools.vo,
com.espressif.idf.core.tools.watcher,
com.espressif.idf.core.util,
com.espressif.idf.core.variable,
org.json.simple,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;

import com.espressif.idf.core.util.IDFUtil;

/**
* @author Kondal Kolipaka
*
Expand All @@ -32,16 +29,6 @@ public class IDFCorePreferenceConstants
public static final boolean CMAKE_CCACHE_DEFAULT_STATUS = true;
public static final boolean AUTOMATE_BUILD_HINTS_DEFAULT_STATUS = true;
public static final boolean HIDE_ERRORS_IDF_COMPONENTS_DEFAULT_STATUS = true;
public static final String IDF_GITHUB_ASSETS = "IDF_GITHUB_ASSETS"; //$NON-NLS-1$
public static final String IDF_GITHUB_ASSETS_DEFAULT_GLOBAL = "dl.espressif.com/github_assets"; //$NON-NLS-1$
public static final String IDF_GITHUB_ASSETS_DEFAULT_CHINA = "dl.espressif.cn/github_assets"; //$NON-NLS-1$
public static final String PIP_EXTRA_INDEX_URL = "PIP_EXTRA_INDEX_URL"; //$NON-NLS-1$
public static final String PIP_EXTRA_INDEX_URL_DEFAULT_GLOBAL = "https://dl.espressif.com/pypi"; //$NON-NLS-1$
public static final String PIP_EXTRA_INDEX_URL_DEFAULT_CHINA = "https://dl.espressif.cn/pypi"; //$NON-NLS-1$
public static final String IDF_TOOLS_PATH = "IDF_TOOLS_PATH"; //$NON-NLS-1$
public static final String IDF_TOOLS_PATH_DEFAULT = Platform.getOS().equals(Platform.OS_WIN32)
? IDFUtil.resolveEnvVariable("%USERPROFILE%\\.espressif") //$NON-NLS-1$
: IDFUtil.resolveEnvVariable("$HOME/.espressif"); //$NON-NLS-1$

/**
* Returns the node in the preference in the given context.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;

import com.espressif.idf.core.logging.Logger;
import com.espressif.idf.core.util.IDFUtil;
import com.espressif.idf.core.util.StringUtil;

/**
Expand Down Expand Up @@ -52,6 +51,12 @@ public class IDFEnvironmentVariables

public static final String IDF_CCACHE_ENABLE = "IDF_CCACHE_ENABLE"; //$NON-NLS-1$

public static final String ESP_IDF_EIM_ID = "ESP_IDF_EIM_ID"; //$NON-NLS-1$

public static final String EIM_PATH = "EIM_PATH"; //$NON-NLS-1$

public static final String SYSTEM_PATH = "SYSTEM_PATH"; //$NON-NLS-1$

/**
* @param variableName Environment variable Name
* @return IEnvironmentVariable
Expand Down Expand Up @@ -129,16 +134,12 @@ public Map<String, String> getSystemEnvMap()
IEnvironmentVariableManager buildEnvironmentManager = CCorePlugin.getDefault().getBuildEnvironmentManager();
IEnvironmentVariable[] variables = buildEnvironmentManager.getVariables((ICConfigurationDescription) null,
true);
Map<String, String> envMap = IDFUtil.getSystemEnv();
Map<String, String> envMap = new HashMap<String, String>(System.getenv());
if (variables != null)
{
for (IEnvironmentVariable iEnvironmentVariable : variables)
{
String key = iEnvironmentVariable.getName();
if (key.equals(IDFCorePreferenceConstants.IDF_TOOLS_PATH))
{
continue;
}
String value = iEnvironmentVariable.getValue();
envMap.put(key, value);
}
Comment on lines +137 to 145
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Restore IDF-specific environment enrichments.

Replacing the old base map with System.getenv() drops the IDF-specific additions from IDFUtil.getSystemEnv() (IDF_TOOLS_PATH preference and Homebrew PATH merge). Tools launched via this map will now miss the installed toolchain. Seed from IDFUtil.getSystemEnv() instead.

-		Map<String, String> envMap = new HashMap<String, String>(System.getenv());
+		Map<String, String> envMap = new HashMap<>(IDFUtil.getSystemEnv());
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Map<String, String> envMap = new HashMap<String, String>(System.getenv());
if (variables != null)
{
for (IEnvironmentVariable iEnvironmentVariable : variables)
{
String key = iEnvironmentVariable.getName();
if (key.equals(IDFCorePreferenceConstants.IDF_TOOLS_PATH))
{
continue;
}
String value = iEnvironmentVariable.getValue();
envMap.put(key, value);
}
Map<String, String> envMap = new HashMap<>(IDFUtil.getSystemEnv());
if (variables != null)
{
for (IEnvironmentVariable iEnvironmentVariable : variables)
{
String key = iEnvironmentVariable.getName();
String value = iEnvironmentVariable.getValue();
envMap.put(key, value);
}
🤖 Prompt for AI Agents
In
bundles/com.espressif.idf.core/src/com/espressif/idf/core/IDFEnvironmentVariables.java
around lines 137 to 145, the code initializes envMap from System.getenv() which
loses IDF-specific enrichments produced by IDFUtil.getSystemEnv(); change the
seed to new HashMap<String,String>(IDFUtil.getSystemEnv()) so the IDF_TOOLS_PATH
and Homebrew PATH merge are preserved, then continue to merge the provided
IEnvironmentVariable entries into that map as before.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,16 +323,6 @@ private File getInstalledToolsInfoFile() throws IOException
Logger.log(environment.toString());
environment.put("PYTHONUNBUFFERED", "1"); //$NON-NLS-1$ //$NON-NLS-2$

environment.put("IDF_GITHUB_ASSETS", //$NON-NLS-1$
Platform.getPreferencesService().getString(IDFCorePlugin.PLUGIN_ID,
IDFCorePreferenceConstants.IDF_GITHUB_ASSETS,
IDFCorePreferenceConstants.IDF_GITHUB_ASSETS_DEFAULT_GLOBAL, null));

environment.put("PIP_EXTRA_INDEX_URL", //$NON-NLS-1$
Platform.getPreferencesService().getString(IDFCorePlugin.PLUGIN_ID,
IDFCorePreferenceConstants.PIP_EXTRA_INDEX_URL,
IDFCorePreferenceConstants.PIP_EXTRA_INDEX_URL_DEFAULT_GLOBAL, null));

if (StringUtil.isEmpty(gitExecutablePath))
{
Logger.log("Git executable path is empty. Please check GIT_PATH environment variable."); //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,9 +359,6 @@ private void runCmakeBuildCommand(IConsole console, IProgressMonitor monitor, IP
}
}

envVars.add(new EnvironmentVariable(IDFCorePreferenceConstants.IDF_TOOLS_PATH,
IDFUtil.getIDFToolsPathFromPreferences()));

String buildCommand = getProperty(BUILD_COMMAND);
if (buildCommand.isBlank())
{
Expand Down Expand Up @@ -481,10 +478,8 @@ private void runCmakeCommand(IConsole console, IProgressMonitor monitor, IProjec
// Set PYTHONUNBUFFERED to 1/TRUE to dump the messages back immediately without
// buffering
IEnvironmentVariable bufferEnvVar = new EnvironmentVariable("PYTHONUNBUFFERED", "1"); //$NON-NLS-1$ //$NON-NLS-2$
IEnvironmentVariable idfToolsPathEnvVar = new EnvironmentVariable(IDFCorePreferenceConstants.IDF_TOOLS_PATH,
IDFUtil.getIDFToolsPathFromPreferences());

Process p = startBuildProcess(command, new IEnvironmentVariable[] { bufferEnvVar, idfToolsPathEnvVar },
Process p = startBuildProcess(command, new IEnvironmentVariable[] { bufferEnvVar },
workingDir, errConsole, monitor);
if (p == null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,26 @@ public class Messages extends NLS
public static String ToolsInitializationDifferentPathMessageBoxOptionYes;
public static String ToolsInitializationDifferentPathMessageBoxOptionNo;
public static String IDFToolChainsMissingErrorMsg;

public static String ToolsInitializationEimMissingMsgBoxTitle;
public static String ToolsInitializationEimMissingMsgBoxMessage;

public static String RefreshingProjects_JobName;

public static String NoActiveEspIdfInWorkspaceMsgTitle;
public static String NoActiveEspIdfInWorkspaceMsg;

public static String OldConfigFoundMsgBoxTitle;
public static String OldConfigFoundMsgBoxMsg;
public static String OldConfigExportDirectorSelectionDialogTitle;
public static String OldConfigExportDirectorSelectionDialogInfo;
public static String OldConfigExportCompleteSuccessMsgTitle;
public static String OldConfigExportCompleteSuccessMsg;
public static String OldConfigExportCompleteFailMsgTitle;
public static String OldConfigExportCompleteFailMsg;

public static String EIMNotInApplicationsTitle;
public static String EIMNotInApplicationsMessage;

static
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,26 @@ IDFBuildConfiguration_ParseCommand=Parse Compile Commands File
IncreasePartitionSizeTitle=Low Application Partition Size
IncreasePartitionSizeMessage=Less than 30% of application partition size is free({0} of {1} bytes), would you like to increase it? Please click <a href={2}>here</a> to check more details.
ToolsInitializationDifferentPathMessageBoxTitle=Different IDF path found in the config file
ToolsInitializationEimMissingMsgBoxTitle=ESP-IDF Installation Required
ToolsInitializationEimMissingMsgBoxMessage=ESP-IDF is not currently installed on your system.\n\nThe IDE can automatically download and launch the EIM - GUI Installer to help you install it.\n\nWould you like to proceed with the installation?\n\nOnce complete, ESP-IDF will be detected automatically. You can also manage installations later from the ESP-IDF Manager (Espressif > ESP-IDF Manager).
ToolsInitializationDifferentPathMessageBoxMessage=A different ESP-IDF path was found in the esp_idf.json.json configuration file. Do you want to install the tools in the new path or the old path? Please click on the appropriate button.\nNew Path: {0}\nOld Path: {1}
ToolsInitializationDifferentPathMessageBoxOptionYes=Use New Path
ToolsInitializationDifferentPathMessageBoxOptionNo=Use Old Path
ToolsInitializationDifferentPathMessageBoxOptionYes=Yes
ToolsInitializationDifferentPathMessageBoxOptionNo=No
RefreshingProjects_JobName=Refreshing Projects...
IDFBuildConfiguration_PreCheck_DifferentIdfPath=The project was built using the ESP-IDF located at the {0} path.\nThe currently active ESP-IDF path in the IDE is {1}.\nPlease clean the project using "ESP-IDF:Project Full Clean" menu option to use the active ESP-IDF configuration.
IDFToolChainsMissingErrorMsg=Toolchains are missing. Please use ESP-IDF Manager for configuring
IDFToolChainsMissingErrorMsg=Toolchains are missing. Please use ESP-IDF Manager for configuring

NoActiveEspIdfInWorkspaceMsgTitle=ESP-IDF Setup
NoActiveEspIdfInWorkspaceMsg=ESP-IDF tools installed via EIM have been detected, but this workspace is not configured yet. The IDE needs to complete setup to enable full functionality. Would you like to proceed now?

EIMNotInApplicationsTitle=EIM Not Located in Applications Folder
EIMNotInApplicationsMessage=Espressif Installation Manager (EIM) is not located in the Applications folder.\nRunning EIM from a temporary location (e.g., a mounted disk image) may cause issues during configuration import or tool setup.\nTo avoid problems, please move EIM to the /Applications directory and launch it from there.

OldConfigFoundMsgBoxTitle=Old Configuration Detected
OldConfigFoundMsgBoxMsg=Espressif IDE now uses the EIM system to manage ESP-IDF installations. A legacy configuration was found in your current workspace. Converting it to the EIM format will allow proper environment setup and ensure the IDE works seamlessly with your existing projects. Would you like to convert the configuration now?
OldConfigExportDirectorSelectionDialogTitle=Select Destination
OldConfigExportDirectorSelectionDialogInfo=Choose a directory to save the exported settings.
OldConfigExportCompleteSuccessMsgTitle=Import Successful
OldConfigExportCompleteSuccessMsg=The old configuration has been successfully imported.
OldConfigExportCompleteFailMsgTitle=Conversion Failed
OldConfigExportCompleteFailMsg=An error occurred while importing old configuration.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
*/
public class Logger
{
public static void log(String message, Exception e)
{
log(IDFCorePlugin.getPlugin(), message, e);
}

public static void log(String message)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ public File findToolChain(List<String> paths, String filePattern)

private Path[] getDirectories(String path)
{
return Arrays.stream(path.split(File.pathSeparator)).map(String::trim).map(Paths::get).filter(Files::exists)
return Arrays.stream(path.split(File.pathSeparator)).map(String::trim).map(Paths::get).filter(Files::exists).filter(Files::isDirectory)
.toArray(Path[]::new);
}

Expand Down Expand Up @@ -318,7 +318,7 @@ protected String getIdfToolsExportPath()
Logger.log(commands.toString());

IStatus idfToolsExportStatus = new ProcessBuilderFactory().runInBackground(commands,
org.eclipse.core.runtime.Path.ROOT, IDFUtil.getSystemEnv());
org.eclipse.core.runtime.Path.ROOT, System.getenv());
if (idfToolsExportStatus != null && idfToolsExportStatus.isOK())
{
String message = idfToolsExportStatus.getMessage();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*******************************************************************************
* Copyright 2025 Espressif Systems (Shanghai) PTE LTD. All rights reserved.
* Use is subject to license terms.
*******************************************************************************/
package com.espressif.idf.core.tools;

/**
* Interface to use for the download listening this can be used in your own classes.
* Added specifically for {@link EimLoader}
* @author Ali Azam Rana <[email protected]>
*
*/
public interface DownloadListener
{
public void onProgress(int percent);
public void onCompleted(String filePath);
public void onError(String message, Exception e);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.espressif.idf.core.tools;

import java.io.File;
import java.nio.file.Paths;

public interface EimConstants
{
String EIM_JSON = "eim_idf.json"; //$NON-NLS-1$

String EIM_POSIX_DIR = System.getProperty("user.home").concat(File.separator + ".espressif" + File.separator + "tools" + File.separator); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$

String EIM_WIN_ESPRESSIF_DIR = "C:" + File.separator + "Espressif"; //$NON-NLS-1$ //$NON-NLS-2$

String EIM_WIN_DIR = EIM_WIN_ESPRESSIF_DIR + File.separator + "tools" + File.separator; //$NON-NLS-1$

String EIM_WIN_PATH = EIM_WIN_DIR + EIM_JSON;

String EIM_URL = "https://dl.espressif.com/dl/eim/"; //$NON-NLS-1$

String EIM_POSIX_PATH = EIM_POSIX_DIR + EIM_JSON;

String INSTALL_TOOLS_FLAG = "INSTALL_TOOLS_FLAG"; //$NON-NLS-1$

String TOOL_SET_CONFIG_LEGACY_CONFIG_FILE = "tool_set_config.json"; //$NON-NLS-1$

String OLD_CONFIG_EXPORTED_FLAG = "OLD_CONFIG_EXPORTED_FLAG"; //$NON-NLS-1$

String USER_EIM_DIR = Paths.get(System.getProperty("user.home"), ".espressif", "eim_gui").toString(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

String EIM_JSON_VALID_VERSION = "1.0"; //$NON-NLS-1$
}
Loading
Loading