mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-16 11:57:32 +00:00

The HSI specification assigns a simple text ID to the current state of firmware security. As new vulnerabilities are found, and as protection measures are updated, new requirements will be added to the required firmware behaviours for each HSI value. The HSI specification is currently incomplete and in active development, and so the --force flag is required in all command line tools. The current ID value will probably change on a given platform so please do not start using the result for any kind of compliance requirements.
188 lines
3.4 KiB
Plaintext
188 lines
3.4 KiB
Plaintext
_fwupdmgr_cmd_list=(
|
|
'activate'
|
|
'clear-history'
|
|
'clear-offline'
|
|
'clear-results'
|
|
'disable-remote'
|
|
'downgrade'
|
|
'enable-remote'
|
|
'get-approved-firmware'
|
|
'get-details'
|
|
'get-devices'
|
|
'get-history'
|
|
'get-releases'
|
|
'get-remotes'
|
|
'get-results'
|
|
'get-topology'
|
|
'get-updates'
|
|
'get-upgrades'
|
|
'install'
|
|
'modify-config'
|
|
'modify-remote'
|
|
'reinstall'
|
|
'refresh'
|
|
'report-history'
|
|
'security'
|
|
'set-approved-firmware'
|
|
'unlock'
|
|
'update'
|
|
'upgrade'
|
|
'verify'
|
|
'verify-update'
|
|
'--version'
|
|
)
|
|
|
|
_fwupdmgr_opts=(
|
|
'--verbose'
|
|
'--offline'
|
|
'--allow-reinstall'
|
|
'--allow-older'
|
|
'--force'
|
|
'--assume-yes'
|
|
'--no-history'
|
|
'--no-unreported-check'
|
|
'--no-metadata-check'
|
|
'--no-reboot-check'
|
|
'--no-safety-check'
|
|
'--show-all-devices'
|
|
'--sign'
|
|
'--filter'
|
|
'--disable-ssl-strict'
|
|
)
|
|
|
|
_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)
|
|
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
|
|
;;
|
|
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
|