Skip to content

Commit

Permalink
Bash completion for chip example applications (#36841)
Browse files Browse the repository at this point in the history
  • Loading branch information
arkq authored Dec 16, 2024
1 parent 9451aa5 commit d162e3a
Showing 1 changed file with 89 additions and 15 deletions.
104 changes: 89 additions & 15 deletions scripts/helpers/bash-completion.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,58 @@ _chip_tool_get_options() {
"$@" --help 2>&1 | awk -F'[[]|[]]' '/^[[]--/{ print $2 }'
}

_chip_app() {

local cur prev words cword split
_init_completion -s || return

case "$prev" in
--ble-device)
readarray -t words < <(ls -I '*:*' /sys/class/bluetooth)
# Get the list of Bluetooth devices without the 'hci' prefix.
readarray -t COMPREPLY < <(compgen -W "${words[*]#hci}" -- "$cur")
return
;;
--custom-flow)
readarray -t COMPREPLY < <(compgen -W "0 1 2" -- "$cur")
return
;;
--capabilities)
# The capabilities option is a bit-field with 3 bits currently defined.
readarray -t COMPREPLY < <(compgen -W "001 010 011 100 101 111" -- "$cur")
return
;;
--KVS)
_filedir
return
;;
--PICS)
_filedir
return
;;
--trace_file)
_filedir
return
;;
--trace_log | --trace_decode)
readarray -t COMPREPLY < <(compgen -W "0 1" -- "$cur")
return
;;
--trace-to)
readarray -t COMPREPLY < <(compgen -W "json perfetto" -- "$cur")
compopt -o nospace
return
;;
esac

case "$cur" in
-*)
readarray -t COMPREPLY < <(compgen -W "$(_parse_help "$1")" -- "$cur")
;;
esac

}

_chip_tool() {

local cur prev words cword split
Expand All @@ -36,34 +88,56 @@ _chip_tool() {
# Get command line arguments up to the cursor position
local args=("${COMP_WORDS[@]:0:$cword+1}")

local command=0
case "$prev" in
--commissioner-name)
readarray -t COMPREPLY < <(compgen -W "alpha beta gamma 4 5 6 7 8 9" -- "$cur")
return
;;
--only-allow-trusted-cd-keys)
readarray -t COMPREPLY < <(compgen -W "0 1" -- "$cur")
return
;;
--paa-trust-store-path | --cd-trust-store-path)
--paa-trust-store-path | --cd-trust-store-path | --dac-revocation-set-path)
_filedir -d
return
;;
--storage-directory)
_filedir -d
return
;;
*)
command=1
--trace-to)
readarray -t COMPREPLY < <(compgen -W "json perfetto" -- "$cur")
compopt -o nospace
return
;;
esac

if [ "$command" -eq 1 ]; then
case "$cur" in
-*)
words=$(_chip_tool_get_options "${args[@]}")
;;
*)
words=$(_chip_tool_get_commands "${args[@]}")
;;
esac
readarray -t COMPREPLY < <(compgen -W "$words" -- "$cur")
fi
case "$cur" in
-*)
words=$(_chip_tool_get_options "${args[@]}")
;;
*)
words=$(_chip_tool_get_commands "${args[@]}")
;;
esac
readarray -t COMPREPLY < <(compgen -W "$words" -- "$cur")

}

complete -F _chip_app chip-air-purifier-app
complete -F _chip_app chip-all-clusters-app
complete -F _chip_app chip-bridge-app
complete -F _chip_app chip-dishwasher-app
complete -F _chip_app chip-energy-management-app
complete -F _chip_app chip-lighting-app
complete -F _chip_app chip-lock-app
complete -F _chip_app chip-log-source-app
complete -F _chip_app chip-microwave-oven-app
complete -F _chip_app chip-ota-provider-app
complete -F _chip_app chip-ota-requestor-app
complete -F _chip_app chip-refrigerator-app
complete -F _chip_app chip-rvc-app
complete -F _chip_app chip-tv-app
complete -F _chip_app chip-tv-casting-app

complete -F _chip_tool chip-tool

0 comments on commit d162e3a

Please sign in to comment.