@@ -194,6 +194,7 @@ def check_config():
194194 else :
195195 arduino_cli = str (arduino_cli_path / "arduino-cli" )
196196
197+ # Check arduino-cli version
197198 try :
198199 output = subprocess .check_output (
199200 [arduino_cli , "version" ],
@@ -217,15 +218,46 @@ def check_config():
217218 if args .url :
218219 stm32_url = args .url
219220
221+ # Check if url is already part of the arduino-cli config
222+ try :
223+ output = subprocess .check_output (
224+ [
225+ arduino_cli ,
226+ "config" ,
227+ "dump" ,
228+ ],
229+ stderr = subprocess .STDOUT ,
230+ )
231+ except subprocess .CalledProcessError as e :
232+ print (f"'{ ' ' .join (e .cmd )} ' failed with code: { e .returncode } !" )
233+ print (e .stdout .decode ("utf-8" ))
234+ quit (e .returncode )
235+ else :
236+ if stm32_url not in output .decode ("utf-8" ):
237+ # Add it to the config
238+ try :
239+ output = subprocess .check_output (
240+ [
241+ arduino_cli ,
242+ "config" ,
243+ "add" ,
244+ "board_manager.additional_urls" ,
245+ stm32_url ,
246+ ],
247+ stderr = subprocess .STDOUT ,
248+ )
249+ except subprocess .CalledProcessError as e :
250+ print (f"'{ ' ' .join (e .cmd )} ' failed with code: { e .returncode } !" )
251+ print (e .stdout .decode ("utf-8" ))
252+ quit (e .returncode )
253+ # Check if requested platform is installed
220254 try :
221255 output = subprocess .check_output (
222256 [
223257 arduino_cli ,
224258 "core" ,
225259 "search" ,
226260 "stm32" ,
227- "--additional-urls" ,
228- stm32_url ,
229261 ],
230262 stderr = subprocess .STDOUT ,
231263 )
@@ -492,8 +524,6 @@ def find_board():
492524 arduino_cli ,
493525 "board" ,
494526 "details" ,
495- "--additional-urls" ,
496- stm32_url ,
497527 "--format" ,
498528 "json" ,
499529 "-b" ,
0 commit comments