mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
zsh: _journalctl: improve support for handling mode args (#3952)
This only completes fields from `journalctl --user` in _journal_fields when `--user` is used. It also changes $_sys_service_mgr to include both `--system` and `--user`, because `journalctl` behaves different from `systemctl` in this regard. No attempt is made to filter out invalid combinations, e.g. when using both `--directory` and `--system` (see https://github.com/systemd/systemd/issues/3949).
This commit is contained in:
parent
9c5077fed4
commit
d551b8fcf7
@ -33,7 +33,7 @@ _journal_none() {
|
||||
|
||||
_journal_fields() {
|
||||
local -a _fields cmd
|
||||
cmd=("journalctl" "-F ${@[-1]}" "2>/dev/null" )
|
||||
cmd=("journalctl $_sys_service_mgr" "-F ${@[-1]}" "2>/dev/null" )
|
||||
_fields=$(_call_program fields $cmd[@])
|
||||
_fields=${_fields//'\'/'\\'}
|
||||
_fields=${_fields//':'/'\:'}
|
||||
@ -51,8 +51,22 @@ _journal_boots() {
|
||||
"bootid:boot ids:compadd -a _bootid"
|
||||
}
|
||||
|
||||
local -a _modes; _modes=("--user" "--system")
|
||||
local _sys_service_mgr=${${words:*_modes}[(R)(${(j.|.)_modes})]:---system}
|
||||
# Build arguments for "journalctl" to be used in completion.
|
||||
# Use both --user and --system modes, they are not exclusive.
|
||||
local -a _modes; _modes=(--user --system)
|
||||
local -a _modes_with_arg; _modes_with_arg=(--directory -D --file -M --machine)
|
||||
typeset -a _sys_service_mgr
|
||||
local w i=0 n=$#words
|
||||
while (( i++ < n )); do
|
||||
w=$words[$i]
|
||||
if (( $_modes[(I)$w] )); then
|
||||
_sys_service_mgr+=($w)
|
||||
else
|
||||
if (( ${_modes_with_arg[(I)$w]} )); then
|
||||
_sys_service_mgr+=($w ${words[((++i))]})
|
||||
fi
|
||||
fi
|
||||
done
|
||||
_arguments -s \
|
||||
{-h,--help}'[Show this help]' \
|
||||
'--version[Show package version]' \
|
||||
|
Loading…
Reference in New Issue
Block a user