Skip to content

Commit 23d3d2c

Browse files
committed
Handle duplicate IDE versions in list passed to script
Previously if you did something like this (assuming 1.8.5 is the newest IDE version): install_ide '("1.8.5" "newest")' It caused the build to fail: Installing: 1.8.5 Installing: 1.8.5 ln: ‘/home/travis/arduino-ide/arduino/arduino-1.8.5’: cannot overwrite directo
1 parent 9874d45 commit 23d3d2c

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

arduino-ci-script.sh

+16-7
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)