@@ -304,9 +304,7 @@ function generate_ide_version_list_array()
304304 ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY=" $baseIDEversionArray "
305305
306306 else
307- # Start the array
308- ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY=" $ARDUINO_CI_SCRIPT_IDE_VERSION_LIST_ARRAY_DECLARATION " ' ('
309-
307+ local rawIDElist
310308 local -r IDEversionListRegex=" \("
311309 if [[ " $startIDEversion " =~ $IDEversionListRegex ]]; then
312310 # IDE versions list was supplied
@@ -322,12 +320,12 @@ function generate_ide_version_list_array()
322320 IDEversion=" $ARDUINO_CI_SCRIPT_DETERMINED_NEWEST_IDE_VERSION "
323321 fi
324322 # Add the version to the array
325- ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY =" ${ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY } " ' "' " $IDEversion " ' "'
323+ rawIDElist =" ${rawIDElist } " ' "' " $IDEversion " ' "'
326324 done
327325
328326 elif [[ " $endIDEversion " == " " ]]; then
329327 # Only a single version was specified
330- ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY =" $ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY " ' "' " $startIDEversion " ' "'
328+ rawIDElist =" $rawIDElist " ' "' " $startIDEversion " ' "'
331329
332330 else
333331 # A version range was specified
@@ -341,7 +339,7 @@ function generate_ide_version_list_array()
341339
342340 if [[ " $listIsStarted " == " true" ]]; then
343341 # Add the version to the list
344- ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY =" ${ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY } " ' "' " $IDEversion " ' "'
342+ rawIDElist =" ${rawIDElist } " ' "' " $IDEversion " ' "'
345343 fi
346344
347345 if [[ " $IDEversion " == " $endIDEversion " ]]; then
@@ -351,7 +349,18 @@ function generate_ide_version_list_array()
351349 done
352350 fi
353351
354- # Finish the list
352+ # Turn the raw IDE version list into an array
353+ declare -a -r rawIDElistArray=" (${rawIDElist} )"
354+
355+ # Remove duplicates from list https://stackoverflow.com/a/13648438
356+ # shellcheck disable=SC2207
357+ readonly local uniqueIDElistArray=($( echo " ${rawIDElistArray[@]} " | tr ' ' ' \n' | sort -u | tr ' \n' ' ' ) )
358+
359+ # Generate ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY
360+ ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY=" $ARDUINO_CI_SCRIPT_IDE_VERSION_LIST_ARRAY_DECLARATION " ' ('
361+ for uniqueIDElistArrayIndex in " ${! uniqueIDElistArray[@]} " ; do
362+ ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY=" ${ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY} " ' "' " ${uniqueIDElistArray[$uniqueIDElistArrayIndex]} " ' "'
363+ done
355364 ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY=" $ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY " ' )'
356365 fi
357366}
0 commit comments