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

Function main

ci/util/toolchain_downloader.py:296–368  ·  view source on GitHub ↗

Main entry point for command-line usage.

()

Source from the content-addressed store, hash-verified

294
295
296def main() -> int:
297 """Main entry point for command-line usage."""
298 import argparse
299
300 parser = argparse.ArgumentParser(
301 description="Pre-download toolchains from platformio.ini"
302 )
303 parser.add_argument(
304 "platformio_ini",
305 type=Path,
306 help="Path to platformio.ini file",
307 )
308 parser.add_argument(
309 "--cache-dir",
310 type=Path,
311 default=None,
312 help="Cache directory (default: ~/.platformio/global_cache)",
313 )
314 parser.add_argument(
315 "--max-workers",
316 type=int,
317 default=4,
318 help="Maximum number of concurrent downloads (default: 4)",
319 )
320 parser.add_argument(
321 "--force-unlock",
322 action="store_true",
323 help="Break all locks before starting (recovery from crashes)",
324 )
325
326 args = parser.parse_args()
327
328 if not args.platformio_ini.exists():
329 logger.error(f"platformio.ini not found: {args.platformio_ini}")
330 return 1
331
332 # Get cache directory
333 cache_dir = (
334 args.cache_dir
335 if args.cache_dir
336 else Path.home() / ".platformio" / "global_cache"
337 )
338
339 # Handle force unlock if requested
340 if args.force_unlock:
341 logger.info("🔓 Breaking all locks in cache directory...")
342 broken = force_unlock_cache(cache_dir)
343 if broken > 0:
344 logger.info(f" Broke {broken} lock(s)")
345 else:
346 logger.info(" No locks found")
347
348 try:
349 results = predownload_toolchains(
350 args.platformio_ini,
351 cache_dir=cache_dir,
352 max_workers=args.max_workers,
353 )

Callers 1

Calls 8

force_unlock_cacheFunction · 0.90
predownload_toolchainsFunction · 0.85
parse_argsMethod · 0.80
valuesMethod · 0.80
warningMethod · 0.80
errorMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected