fwupd/data/bash-completion/fwupdmgr
Mario Limonciello b7b0ce533d trivial: Unify ambiguity between bios-attrs and bios-settings
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.
2022-08-24 07:20:01 -05:00

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