Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bash completion for chip example applications #36841

Merged
merged 1 commit into from
Dec 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading