MCPcopy Create free account
hub / github.com/FastLED/FastLED / extract_toolchains_from_platformio_ini

Function extract_toolchains_from_platformio_ini

ci/util/toolchain_downloader.py:51–99  ·  view source on GitHub ↗

Extract all toolchain packages from a platformio.ini file. Args: platformio_ini_path: Path to platformio.ini file Returns: List of PackageInfo objects for all toolchains

(
    platformio_ini_path: Path,
)

Source from the content-addressed store, hash-verified

49
50
51def extract_toolchains_from_platformio_ini(
52 platformio_ini_path: Path,
53) -> list[PackageInfo]:
54 """
55 Extract all toolchain packages from a platformio.ini file.
56
57 Args:
58 platformio_ini_path: Path to platformio.ini file
59
60 Returns:
61 List of PackageInfo objects for all toolchains
62 """
63 try:
64 pio_ini = PlatformIOIni.parseFile(platformio_ini_path)
65 except KeyboardInterrupt as ki:
66 handle_keyboard_interrupt(ki)
67 raise
68 except Exception as e:
69 logger.error(f"Failed to parse {platformio_ini_path}: {e}")
70 return []
71
72 all_packages: list[PackageInfo] = []
73
74 # Get all platform URLs from the ini file
75 for section_name, option_name, platform_value in pio_ini.get_platform_urls():
76 if not platform_value:
77 continue
78
79 # Resolve platform to get package information
80 # Use force_resolve=True to query PlatformIO even for direct URLs
81 try:
82 resolution = pio_ini.resolve_platform_url_enhanced(
83 platform_value, force_resolve=True
84 )
85 if resolution and resolution.packages:
86 logger.info(
87 f"Found {len(resolution.packages)} packages for platform {platform_value}"
88 )
89 all_packages.extend(resolution.packages)
90 except KeyboardInterrupt as ki:
91 handle_keyboard_interrupt(ki)
92 raise
93 except Exception as e:
94 logger.warning(
95 f"Failed to resolve platform {platform_value} in {section_name}: {e}"
96 )
97 continue
98
99 return all_packages
100
101
102def download_toolchain(

Callers 1

predownload_toolchainsFunction · 0.85

Calls 7

parseFileMethod · 0.80
get_platform_urlsMethod · 0.80
warningMethod · 0.80
errorMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected