mirror of
https://git.proxmox.com/git/fwupd
synced 2025-07-23 22:14:57 +00:00

This functionality broke a number of releases ago as part of implementing device inhibition and was just noticed now. Instead of fixing it, the preference seems to be to remove the functionality as it exists today as inhibitions can happen for a number of reasons. To still allow people to override these power warnings (such as during development) add a new daemon configuration item that can be used. Fixes: #3778
208 lines
3.8 KiB
Plaintext
208 lines
3.8 KiB
Plaintext
_fwupdmgr_cmd_list=(
|
|
'activate'
|
|
'block-firmware'
|
|
'clear-history'
|
|
'clear-offline'
|
|
'clear-results'
|
|
'disable-remote'
|
|
'device-test'
|
|
'downgrade'
|
|
'download'
|
|
'enable-remote'
|
|
'get-approved-firmware'
|
|
'get-blocked-firmware'
|
|
'get-details'
|
|
'get-devices'
|
|
'get-history'
|
|
'get-releases'
|
|
'get-remotes'
|
|
'get-results'
|
|
'get-topology'
|
|
'get-updates'
|
|
'get-upgrades'
|
|
'get-plugins'
|
|
'install'
|
|
'modify-config'
|
|
'modify-remote'
|
|
'reinstall'
|
|
'refresh'
|
|
'report-history'
|
|
'security'
|
|
'set-approved-firmware'
|
|
'switch-branch'
|
|
'unlock'
|
|
'unblock-firmware'
|
|
'update'
|
|
'upgrade'
|
|
'verify'
|
|
'verify-update'
|
|
'--version'
|
|
)
|
|
|
|
_fwupdmgr_opts=(
|
|
'--verbose'
|
|
'--offline'
|
|
'--allow-reinstall'
|
|
'--allow-older'
|
|
'--allow-branch-switch'
|
|
'--force'
|
|
'--assume-yes'
|
|
'--no-history'
|
|
'--no-unreported-check'
|
|
'--no-metadata-check'
|
|
'--no-reboot-check'
|
|
'--no-safety-check'
|
|
'--no-remote-check'
|
|
'--show-all'
|
|
'--sign'
|
|
'--filter'
|
|
'--disable-ssl-strict'
|
|
'--ipfs'
|
|
'--json'
|
|
)
|
|
|
|
_show_filters()
|
|
{
|
|
local flags
|
|
flags="$(command @libexecdir@/fwupdtool get-device-flags 2>/dev/null)"
|
|
COMPREPLY+=( $(compgen -W "${flags}" -- "$cur") )
|
|
}
|
|
|
|
_show_modifiers()
|
|
{
|
|
COMPREPLY+=( $(compgen -W '${_fwupdmgr_opts[@]}' -- "$cur") )
|
|
}
|
|
|
|
_show_device_ids()
|
|
{
|
|
local description
|
|
OLDIFS=$IFS
|
|
IFS=$'\n'
|
|
description="$(command fwupdagent get-devices 2>/dev/null | sed -e 's,"Name" :,,; s,",,g; s,\,,,g; s,[[:space:]]\+,,' | command awk '!/DeviceId/ { line = $0 }; /DeviceId/ { print $3 " { "line" }"}')"
|
|
COMPREPLY+=( $(compgen -W "${description}" -- "$cur") )
|
|
IFS=$OLDIFS
|
|
}
|
|
|
|
_show_remotes()
|
|
{
|
|
local remotes
|
|
remotes="$(command fwupdmgr get-remotes | command awk '/Remote ID/ { print $4 }')"
|
|
COMPREPLY+=( $(compgen -W "${remotes}" -- "$cur") )
|
|
}
|
|
|
|
_fwupdmgr()
|
|
{
|
|
local cur prev command
|
|
COMPREPLY=()
|
|
cur=`_get_cword`
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
command=${COMP_WORDS[1]}
|
|
|
|
case $prev in
|
|
--filter)
|
|
_show_filters
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
case $command in
|
|
activate|clear-results|downgrade|get-releases|get-results|unlock|verify|verify-update|get-updates|switch-branch)
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_show_device_ids
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
get-details)
|
|
#browse for file
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_filedir
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
device-test)
|
|
#browse for files
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_filedir
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
install)
|
|
#find files
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_filedir
|
|
#device ID or modifiers
|
|
elif [[ "$prev" = "${COMP_WORDS[2]}" ]]; then
|
|
_show_device_ids
|
|
_show_modifiers
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
modify-remote)
|
|
#find remotes
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_show_remotes
|
|
#add key
|
|
elif [[ "$prev" = "${COMP_WORDS[2]}" ]]; then
|
|
local keys
|
|
keys="$(command fwupdmgr get-remotes | command awk -v pattern="Remote ID:.*${prev}$" '$0~pattern{show=1; next}/Remote/{show=0}{gsub(/:.*/,"")}show')"
|
|
COMPREPLY+=( $(compgen -W "${keys}" -- "$cur") )
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
enable-remote)
|
|
#find remotes
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_show_remotes
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
disable-remote)
|
|
#find remotes
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_show_remotes
|
|
#modifiers
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
refresh)
|
|
#find first file
|
|
if [[ "$prev" = "$command" ]]; then
|
|
_filedir
|
|
#find second file
|
|
elif [[ "$prev" = "${COMP_WORDS[2]}" ]]; then
|
|
_filedir
|
|
#find remote ID
|
|
elif [[ "$prev" = "${COMP_WORDS[3]}" ]]; then
|
|
_show_remotes
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
*)
|
|
#find first command
|
|
if [[ ${COMP_CWORD} = 1 ]]; then
|
|
COMPREPLY=( $(compgen -W '${_fwupdmgr_cmd_list[@]}' -- "$cur") )
|
|
#modifiers for all commands
|
|
else
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
return 0
|
|
}
|
|
|
|
complete -F _fwupdmgr fwupdmgr
|