feat(boards): Support board revisions in setup scripts.
* Make setup.sh/ps1 prompt for board revision for boards that have revisions
This commit is contained in:
parent
fff1cbecdc
commit
4bef4e98f5
3 changed files with 78 additions and 1 deletions
|
@ -131,6 +131,19 @@ if ($keyboard_type -eq "shield") {
|
|||
{{/boards}}
|
||||
}
|
||||
|
||||
$boards_revisions = [ordered]@{
|
||||
{{#boards}}
|
||||
{{id}} = @({{#revisions}}
|
||||
"{{.}}"{{/revisions}});
|
||||
{{/boards}}
|
||||
}
|
||||
|
||||
$boards_default_revision=[ordered]@{
|
||||
{{#boards}}
|
||||
{{id}} = "{{{default_revision}}}";
|
||||
{{/boards}}
|
||||
}
|
||||
|
||||
Write-Host "$title"
|
||||
Write-Host ""
|
||||
Write-Host "MCU Board Selection:"
|
||||
|
@ -145,6 +158,22 @@ if ($keyboard_type -eq "shield") {
|
|||
$shields = $keyboard_siblings
|
||||
$board = $($($boards.keys)[$choice])
|
||||
$boards = ( $board )
|
||||
|
||||
if ($($($boards_revisions.values)[$choice]).count -gt 0) {
|
||||
$valid_revisions = $($($boards_revisions.values)[$choice])
|
||||
$revision_choices = @() + $valid_revisions
|
||||
|
||||
for ($i = 0; $i -lt $valid_revisions.count; $i += 1) {
|
||||
if ($valid_revisions[$i] -eq $($($boards_default_revision.values)[$choice])) {
|
||||
$revision_choices[$i] += " (default)"
|
||||
}
|
||||
}
|
||||
|
||||
$revision_choice = Get-Choice-From-Options -Options $revision_choices -Prompt $prompt
|
||||
$board = $board + "@" + $valid_revisions[$revision_choice]
|
||||
$boards = ( $board )
|
||||
}
|
||||
|
||||
} else {
|
||||
$boards = ( $keyboard_siblings )
|
||||
$shields = @( )
|
||||
|
|
|
@ -122,6 +122,9 @@ if [ "$keyboard_shield" == "y" ]; then
|
|||
board_ids=({{#boards}}"{{id}}" {{/boards}})
|
||||
boards_usb_only=({{#boards}}"{{#usb_only}}y{{/usb_only}}{{^usb_only}}n{{/usb_only}}" {{/boards}})
|
||||
|
||||
boards_revisions=({{#boards}}"{{#revisions}}{{.}} {{/revisions}}" {{/boards}})
|
||||
boards_default_revision=({{#boards}}"{{{default_revision}}}" {{/boards}})
|
||||
|
||||
echo ""
|
||||
echo "MCU Board Selection:"
|
||||
PS3="$prompt "
|
||||
|
@ -151,6 +154,38 @@ if [ "$keyboard_shield" == "y" ]; then
|
|||
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "${boards_revisions[$board_index]}" ]; then
|
||||
read -a _valid_revisions <<< "${boards_revisions[$board_index]}"
|
||||
|
||||
_rev_choices=("${_valid_revisions[@]}")
|
||||
for (( _i=0; _i<${#_valid_revisions}; _i++ )); do
|
||||
if [ "${boards_default_revision[board_index]}" = "${_valid_revisions[_i]}" ]; then
|
||||
_rev_choices[_i]+=" (default)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "MCU Board Revision:"
|
||||
select opt in "${_rev_choices[@]}" "Quit"; do
|
||||
case "$REPLY" in
|
||||
''|*[!0-9]*) echo "Invalid option. Try another one."; continue;;
|
||||
|
||||
$(( ${#_valid_revisions[@]}+1 )) ) echo "Goodbye!"; exit 1;;
|
||||
*)
|
||||
if [ $REPLY -gt $(( ${#_valid_revisions[@]}+1 )) ] || [ $REPLY -lt 0 ]; then
|
||||
echo "Invalid option. Try another one."
|
||||
continue
|
||||
fi
|
||||
|
||||
_rev_index=$(( $REPLY-1 ))
|
||||
board="${board_ids[$board_index]}@${_valid_revisions[_rev_index]}"
|
||||
boards=( "${board}" )
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
else
|
||||
board=${keyboard}
|
||||
boards=$keyboard_siblings
|
||||
|
|
|
@ -16,7 +16,11 @@
|
|||
"$defs": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9_]+$"
|
||||
"pattern": "^[a-z0-9_]+(@([A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})))?$"
|
||||
},
|
||||
"revision": {
|
||||
"type": "string",
|
||||
"pattern": "[A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})"
|
||||
},
|
||||
"keyboard_siblings": {
|
||||
"type": "array",
|
||||
|
@ -202,6 +206,15 @@
|
|||
},
|
||||
"exposes": {
|
||||
"$ref": "#/$defs/interconnects"
|
||||
},
|
||||
"revisions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/revision"
|
||||
}
|
||||
},
|
||||
"default_revision": {
|
||||
"$ref": "#/$defs/revision"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue