mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-02 22:03:48 +00:00

These are currently used interchangeably since there was indecisiveness which to use as the feature was being developed. As outward facing it will be named with "settings", change all uses in the code to match this.
281 lines
5.2 KiB
Plaintext
281 lines
5.2 KiB
Plaintext
_fwupdmgr_cmd_list=(
|
|
'activate'
|
|
'block-firmware'
|
|
'clear-results'
|
|
'disable-remote'
|
|
'device-test'
|
|
'downgrade'
|
|
'download'
|
|
'enable-remote'
|
|
'get-approved-firmware'
|
|
'get-bios-setting'
|
|
'get-blocked-firmware'
|
|
'get-details'
|
|
'get-devices'
|
|
'get-history'
|
|
'get-releases'
|
|
'get-remotes'
|
|
'get-results'
|
|
'get-topology'
|
|
'get-updates'
|
|
'get-upgrades'
|
|
'get-plugins'
|
|
'install'
|
|
'local-install'
|
|
'modify-config'
|
|
'modify-remote'
|
|
'reinstall'
|
|
'refresh'
|
|
'report-history'
|
|
'security'
|
|
'set-approved-firmware'
|
|
'set-bios-setting'
|
|
'switch-branch'
|
|
'sync-bkc'
|
|
'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'
|
|
)
|
|
|
|
bios_get_opts=(
|
|
'--no-authenticate'
|
|
'--json'
|
|
'--verbose'
|
|
)
|
|
|
|
bios_set_opts=(
|
|
'--no-reboot-check'
|
|
'--json'
|
|
'--verbose'
|
|
)
|
|
|
|
_show_file_in_dir()
|
|
{
|
|
local files
|
|
files="$(ls 2>/dev/null)"
|
|
COMPREPLY+=( $(compgen -W "${files}" -- "$cur") )
|
|
}
|
|
|
|
_show_bios_get_modifiers()
|
|
{
|
|
COMPREPLY+=( $(compgen -W '${bios_get_opts[@]}' -- "$cur") )
|
|
}
|
|
|
|
_show_bios_set_modifiers()
|
|
{
|
|
COMPREPLY+=( $(compgen -W '${bios_set_opts[@]}' -- "$cur") )
|
|
}
|
|
|
|
_show_filters()
|
|
{
|
|
local flags
|
|
flags="$(command fwupdtool get-device-flags 2>/dev/null)"
|
|
COMPREPLY+=( $(compgen -W "${flags}" -- "$cur") )
|
|
}
|
|
|
|
_show_modifiers()
|
|
{
|
|
COMPREPLY+=( $(compgen -W '${_fwupdmgr_opts[@]}' -- "$cur") )
|
|
}
|
|
|
|
_show_bios_settings()
|
|
{
|
|
if ! command -v jq &> /dev/null; then
|
|
return 0
|
|
fi
|
|
local attr
|
|
attr="$(command fwupdmgr get-bios-setting --json --no-authenticate 2>/dev/null | jq '.BiosSettings | .[] | .Name')"
|
|
COMPREPLY+=( $(compgen -W "${attr}" -- "$cur") )
|
|
}
|
|
|
|
_show_bios_settings_possible()
|
|
{
|
|
if ! command -v jq &> /dev/null; then
|
|
return 0
|
|
fi
|
|
local attr
|
|
attr="$(command fwupdmgr get-bios-setting "$1" --json --no-authenticate 2>/dev/null | jq '.BiosSettings | .[] | .BiosSettingPossibleValues | .[]')"
|
|
COMPREPLY+=( $(compgen -W "${attr}" -- "$cur") )
|
|
}
|
|
|
|
_show_device_ids()
|
|
{
|
|
if ! command -v jq &> /dev/null; then
|
|
return 0
|
|
fi
|
|
local description
|
|
description="$(command fwupdmgr get-devices --json 2>/dev/null | jq '.Devices | .[] | .DeviceId')"
|
|
COMPREPLY+=( $(compgen -W "${description}" -- "$cur") )
|
|
}
|
|
|
|
_show_release_versions()
|
|
{
|
|
if ! command -v jq &> /dev/null; then
|
|
return 0
|
|
fi
|
|
local description
|
|
description="$(command fwupdmgr get-releases "$1" --json 2>/dev/null | jq '.Releases[].Version')"
|
|
COMPREPLY+=( $(compgen -W "${description}" -- "$cur") )
|
|
}
|
|
|
|
_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 arg args
|
|
COMPREPLY=()
|
|
_get_comp_words_by_ref cur prev
|
|
_get_first_arg
|
|
_count_args
|
|
|
|
case $prev in
|
|
--filter)
|
|
_show_filters
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
case $arg in
|
|
activate|clear-results|downgrade|get-releases|get-results|unlock|verify|verify-update|get-updates|switch-branch|update|upgrade)
|
|
#device ID
|
|
if [[ "$args" = "2" ]]; then
|
|
_show_device_ids
|
|
fi
|
|
;;
|
|
get-bios-settings|get-bios-setting)
|
|
#bios settings (no limit)
|
|
_show_bios_settings
|
|
_show_bios_get_modifiers
|
|
return 0
|
|
;;
|
|
set-bios-setting)
|
|
if [[ "$prev" = "--json" ]]; then
|
|
_show_file_in_dir "$prev"
|
|
return 0
|
|
fi
|
|
count=$(($((args)) % 2))
|
|
#allow setting a single bios setting at a time
|
|
if [[ $count == 0 ]]; then
|
|
_show_bios_settings
|
|
fi
|
|
#possible values (only works for enumeration though)
|
|
if [[ $count == 1 ]]; then
|
|
_show_bios_settings_possible "$prev"
|
|
return 0
|
|
fi
|
|
_show_bios_set_modifiers
|
|
return 0
|
|
;;
|
|
get-details)
|
|
#find files
|
|
if [[ "$args" = "2" ]]; then
|
|
_filedir
|
|
fi
|
|
;;
|
|
device-test)
|
|
#find files
|
|
if [[ "$args" = "2" ]]; then
|
|
_filedir
|
|
fi
|
|
;;
|
|
install)
|
|
#device ID
|
|
if [[ "$args" = "2" ]]; then
|
|
_show_device_ids
|
|
#version
|
|
elif [[ "$args" = "3" ]]; then
|
|
_show_release_versions "$prev"
|
|
fi
|
|
;;
|
|
local-install)
|
|
#find files
|
|
if [[ "$args" = "2" ]]; then
|
|
_filedir
|
|
#device ID or modifiers
|
|
elif [[ "$args" = "3" ]]; then
|
|
_show_device_ids
|
|
_show_modifiers
|
|
fi
|
|
;;
|
|
modify-remote)
|
|
#find remotes
|
|
if [[ "$args" = "2" ]]; then
|
|
_show_remotes
|
|
#add key
|
|
elif [[ "$args" = "3" ]]; 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") )
|
|
fi
|
|
;;
|
|
enable-remote)
|
|
#find remotes
|
|
if [[ "$args" = "2" ]]; then
|
|
_show_remotes
|
|
fi
|
|
;;
|
|
disable-remote)
|
|
#find remotes
|
|
if [[ "$args" = "2" ]]; then
|
|
_show_remotes
|
|
fi
|
|
;;
|
|
refresh)
|
|
#find first file
|
|
if [[ "$args" = "2" ]]; then
|
|
_filedir
|
|
#find second file
|
|
elif [[ "$args" = "3" ]]; then
|
|
_filedir
|
|
#find remote ID
|
|
elif [[ "$args" = "4" ]]; then
|
|
_show_remotes
|
|
fi
|
|
;;
|
|
*)
|
|
#find first command
|
|
if [[ "$args" = "1" ]]; then
|
|
COMPREPLY=( $(compgen -W '${_fwupdmgr_cmd_list[@]}' -- "$cur") )
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
#modifiers
|
|
_show_modifiers
|
|
|
|
return 0
|
|
}
|
|
|
|
complete -F _fwupdmgr fwupdmgr
|