Skip to content

Commit e0f95ad

Browse files
authored
Update component_manager.py
1 parent be27afc commit e0f95ad

File tree

1 file changed

+35
-27
lines changed

1 file changed

+35
-27
lines changed

builder/frameworks/component_manager.py

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,46 @@ def __init__(self, env):
2323

2424
self.arduino_framework_dir = self.platform.get_package_dir("framework-arduinoespressif32")
2525
self.arduino_libs_mcu = join(self.platform.get_package_dir("framework-arduinoespressif32-libs"), self.mcu)
26-
26+
2727
def handle_component_settings(self, add_components: bool = False, remove_components: bool = False) -> None:
2828
"""Handle adding and removing IDF components based on project configuration."""
29-
if not (add_components or remove_components):
30-
return
31-
29+
3230
# Create backup before first component removal
33-
if remove_components and not self.removed_components:
31+
if remove_components and not self.removed_components or add_components and not self.add_components:
3432
self._backup_pioarduino_build_py()
33+
34+
# Check if env and GetProjectOption are available
35+
if hasattr(self, 'env') or hasattr(self.env, 'GetProjectOption'):
36+
component_yml_path = self._get_or_create_component_yml()
37+
component_data = self._load_component_yml(component_yml_path)
38+
39+
if remove_components:
40+
try:
41+
remove_option = self.env.GetProjectOption("custom_component_remove", None)
42+
if remove_option:
43+
components_to_remove = remove_option.splitlines()
44+
self._remove_components(component_data, components_to_remove)
45+
except Exception as e:
46+
# Optional: Logging for debugging
47+
# print(f"Error removing components: {e}")
48+
pass
49+
50+
if add_components:
51+
try:
52+
add_option = self.env.GetProjectOption("custom_component_add", None)
53+
if add_option:
54+
components_to_add = add_option.splitlines()
55+
self._add_components(component_data, components_to_add)
56+
except Exception as e:
57+
# Optional: Logging for debugging
58+
# print(f"Error adding components: {e}")
59+
pass
60+
61+
self._save_component_yml(component_yml_path, component_data)
3562

36-
component_yml_path = self._get_or_create_component_yml()
37-
component_data = self._load_component_yml(component_yml_path)
38-
39-
if remove_components:
40-
try:
41-
components_to_remove = self.env.GetProjectOption("custom_component_remove").splitlines()
42-
self._remove_components(component_data, components_to_remove)
43-
except:
44-
pass
45-
46-
if add_components:
47-
try:
48-
components_to_add = self.env.GetProjectOption("custom_component_add").splitlines()
49-
self._add_components(component_data, components_to_add)
50-
except:
51-
pass
52-
53-
self._save_component_yml(component_yml_path, component_data)
54-
55-
# Clean up removed components
56-
if self.removed_components:
57-
self._cleanup_removed_components()
63+
# Clean up removed components
64+
if self.removed_components:
65+
self._cleanup_removed_components()
5866

5967
self.handle_lib_ignore()
6068

0 commit comments

Comments
 (0)