@@ -193,7 +193,7 @@ def check_config():
193193 arduino_cli = arduino_cli_path / "arduino-cli.exe"
194194 else :
195195 arduino_cli = arduino_cli_path / "arduino-cli"
196-
196+ # Check arduino-cli version
197197 try :
198198 output = subprocess .check_output (
199199 [arduino_cli , "version" ],
@@ -217,15 +217,46 @@ def check_config():
217217 if args .url :
218218 stm32_url = args .url
219219
220+ # Check if url is already part of the arduino-cli config
221+ try :
222+ output = subprocess .check_output (
223+ [
224+ arduino_cli ,
225+ "config" ,
226+ "dump" ,
227+ ],
228+ stderr = subprocess .STDOUT ,
229+ )
230+ except subprocess .CalledProcessError as e :
231+ print (f"'{ ' ' .join (e .cmd )} ' failed with code: { e .returncode } !" )
232+ print (e .stdout .decode ("utf-8" ))
233+ quit (e .returncode )
234+ else :
235+ if stm32_url not in output .decode ("utf-8" ):
236+ # Add it to the config
237+ try :
238+ output = subprocess .check_output (
239+ [
240+ arduino_cli ,
241+ "config" ,
242+ "add" ,
243+ "board_manager.additional_urls" ,
244+ stm32_url ,
245+ ],
246+ stderr = subprocess .STDOUT ,
247+ )
248+ except subprocess .CalledProcessError as e :
249+ print (f"'{ ' ' .join (e .cmd )} ' failed with code: { e .returncode } !" )
250+ print (e .stdout .decode ("utf-8" ))
251+ quit (e .returncode )
252+ # Check if requested platform is installed
220253 try :
221254 output = subprocess .check_output (
222255 [
223256 arduino_cli ,
224257 "core" ,
225258 "search" ,
226259 "stm32" ,
227- "--additional-urls" ,
228- stm32_url ,
229260 ],
230261 stderr = subprocess .STDOUT ,
231262 )
@@ -492,8 +523,6 @@ def find_board():
492523 arduino_cli ,
493524 "board" ,
494525 "details" ,
495- "--additional-urls" ,
496- stm32_url ,
497526 "--format" ,
498527 "json" ,
499528 "-b" ,
0 commit comments