#compdef fwupdmgr # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for fwupdmgr 1.8.12 (https://github.com/hughsie/fwupd). # # ------------------------------------------------------------------------------ # Authors # ------- # # * Julien Nicoulaud # * Shohei Yoshida (https://github.com/syohex) # # ------------------------------------------------------------------------------ _fwupdmgr() { local context state state_descr line typeset -A opt_args local ret=1 _arguments -C \ '(- : *)'{-h,--help}'[display help information]' \ '(- : *)'{-v,--version}'[display version information]' \ {-v,--verbose}'[show extra debugging information]' \ --offline'[schedule installation for next reboot when possible]' \ --allow-reinstall'[allow re-installing existing firmware versions]' \ --allow-older'[allow downgrading firmware versions]' \ --allow-branch-switch'[allow switching firmware branch]' \ --force'[override warnings and force the action]' \ '(-y, --assume-yes)'{-y,--assume-yes}'[answer yes to all questions]' \ --sign'[sign the uploaded data with the client certificate]' \ --no-unreported-check'[do not check for unreported history]' \ --no-metadata-check'[do not check for old metadata]' \ --no-reboot-check'[do not check for reboot after update]' \ --no-safety-check'[do not perform device safety checks]' \ --no-device-prompt'[do not prompt for devices]' \ --no-history'[do not write to the history database]' \ --show-all'[show all results]' \ --disable-ssl-strict'[ignore SSL strict checks when downloading files]' \ --ipfs'[only use IPFS when downloading files]' \ --filter'[filter with a set of device flags using a ~ prefix to exclude]:filter' \ --json'[output in JSON format]' \ --no-authenticate'[do not prompt for authentication]' \ '(-): :->command' \ '(-)*:: :->arguments' \ && ret=0 case $state in (command) _fwupdmgr_commands ;; (arguments) case $words[1] in (activate|downgrade|emulation-tag|emulation-untag|get-releases|get-updates|reinstall|update|verify|verify-update) _arguments \ '1::device_id or GUID:_fwupdmgr_device_ids' \ && ret=0 ;; (clear-results|get-results|unlock) _arguments \ '1:device_id or GUID:_fwupdmgr_device_ids' \ && ret=0 ;; (device-emulate|device-test|emulation-load|emulation-save|get-details|set-approved-firmware) _arguments \ '*::files:_files' \ && ret=0 ;; (disable-remote|modify-remote) _arguments \ '1:remote ID:_fwupdmgr_remote_ids' \ && ret=0 ;; (install) _arguments \ '1:device_id or GUID:_fwupdmgr_device_ids' \ '2:version' \ && ret=0 ;; (local-install) _arguments \ '1:file:_files' \ '2:device_id or GUID:_fwupdmgr_device_ids' \ && ret=0 ;; (refresh) _arguments \ '1:file or remote ID:_alternative _files _fwupdmgr_remote_ids' \ && ret=0 ;; (switch-branch) _arguments \ '1:device_id or GUID:_fwupdmgr_device_ids' \ '2:branch' \ && ret=0 ;; esac ;; esac return ret } (( $+functions[_fwupdmgr_commands] )) || _fwupdmgr_commands() { local -a commands=( 'activate:activate devices' 'block-firmware:blocks a specific firmware from being installed' 'clear-results:clears the results from the last update' 'device-emulate:emulate a device using a JSON manifest' 'device-test:test a device using a JSON manifest' 'disable-remote:disables a given remote' 'downgrade:downgrades the firmware on a device' 'emulation-load:load device emulation data' 'emulation-save:save device emulation data' 'emulation-tag:adds devices to watch for future emulation' 'emulation-untag:removes devices to watch for future emulation' 'enable-remote:enables a given remote' 'get-approved-firmware:gets the list of approved firmware' 'get-bios-settings:retrieve BIOS settings' 'get-blocked-firmware:gets the list of blocked firmware' 'get-details:gets details about a firmware file' 'get-devices:get all devices that support firmware updates' 'get-history:show history of firmware updates' 'get-plugins:get all enabled plugins registered with the system' 'get-releases:gets the releases for a device' 'get-remotes:gets the configured remotes' 'get-results:gets the results from the last update' 'get-topology:get all devices according to the system topology' 'get-updates:gets the list of updates for connected hardware' 'inhibit:inhibit the system to prevent upgrades' 'install:install a firmware file on this hardware' 'local-install:install a firmware file on this hardware' 'modify-config:modifies a daemon configuration value' 'modify-remote:modifies a given remote' 'quit:asks the daemon to quit' 'refresh:refresh metadata from remote server' 'security:gets the host security attributes' 'report-history:share firmware history with the developers' 'set-approved-firmware:sets the list of approved firmware' 'set-bios-setting:sets one or more BIOS settings' 'switch-branch:switch the firmware branch on device' 'sync-bkc:sync firmware versions to the host best known configuration ' 'unblock-firmware:unblocks a specific firmware from being installed' 'uninhibit:uninhibit the system to allow upgrades' 'unlock:unlocks the device for firmware access' 'update:updates all firmware to latest versions available' 'verify:gets the cryptographic hash of the dumped firmware' 'verify-update:update the stored metadata with current ROM contents' ) _describe -t commands commands commands } (( $+functions[_fwupdmgr_device_ids] )) || _fwupdmgr_device_ids() { # TODO add device name as description local -a devices devices=($(_call_program devices fwupdmgr get-devices | awk '/Device ID/||/DeviceId/{print $NF}')) _describe -t devices 'device ID' devices } (( $+functions[_fwupdmgr_remote_ids] )) || _fwupdmgr_remote_ids() { # TODO add remote description local -a remotes remotes=($(_call_program remotes fwupdmgr get-remotes | awk '/Remote ID/{print $NF}')) _describe -t remotes 'remote ID' remotes } _fwupdmgr "$@" # Local Variables: # mode: Shell-Script # sh-indentation: 2 # indent-tabs-mode: nil # sh-basic-offset: 2 # End: # vim: ft=zsh sw=2 ts=2 et