blob: 6737f2149cc5f91f6803361a7a93a2f03bcb3c6b [file] [log] [blame]
#!/bin/bash
#
# Copyright (c) 2023 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Get the list of commands from the output of the chip-tool,
# where each command is prefixed with the ' | * ' string.
_chip_tool_get_commands() {
"$@" --help 2>&1 | awk '/ [|] [*] /{ print $3 }'
}
# Get the list of options from the output of the chip-tool,
# where each option starts with the '[--' string.
_chip_tool_get_options() {
"$@" --help 2>&1 | awk -F'[[]|[]]' '/^[[]--/{ print $2 }'
}
_chip_tool() {
local cur prev words cword split
_init_completion -s || return
# 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")
;;
--paa-trust-store-path | --cd-trust-store-path)
_filedir -d
;;
--storage-directory)
_filedir -d
;;
*)
command=1
;;
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
}
complete -F _chip_tool chip-tool