mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-26 03:35:17 +00:00
Improve journalctl completion
- Complete fields and (more importantly) values - Add all options - Complete boots Signed-off-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
This commit is contained in:
parent
8b14f1050d
commit
97edc96afd
1 changed files with 43 additions and 13 deletions
|
@ -1,3 +1,31 @@
|
|||
function __fish_journalctl_fields
|
||||
# This would be nicer to get programatically, but this is how the official
|
||||
# bash completion does it
|
||||
set -l __journal_fields MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE _{P,U,G}ID _COMM _EXE _CMDLINE _AUDIT_{SESSION,LOGINUID} _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT _KERNEL_{DEVICE,SUBSYSTEM} _UDEV_{SYSNAME,DEVNODE,DEVLINK} __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP
|
||||
for f in $__journal_fields
|
||||
echo $f"="
|
||||
end
|
||||
end
|
||||
|
||||
function __fish_journalctl_is_field
|
||||
set -l token (commandline -t)
|
||||
if contains -- $token (__fish_journalctl_fields)
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_journalctl_field_values
|
||||
set -l token (commandline -t | cut -d"=" -f 1)
|
||||
command journalctl -F $token ^ /dev/null | while read value
|
||||
echo $token=$value
|
||||
end
|
||||
end
|
||||
|
||||
complete -c journalctl -n "not __fish_journalctl_is_field" -a '(__fish_journalctl_fields)' -d "Journal field" -f
|
||||
complete -c journalctl -n "not __fish_journalctl_is_field" -a '(command journalctl -F _EXE ^/dev/null)' -d "Executable"
|
||||
complete -c journalctl -n "not __fish_journalctl_is_field" -a '+' -d "OR"
|
||||
complete -c journalctl -n "__fish_journalctl_is_field" -a '(__fish_journalctl_field_values)' -f -r -A
|
||||
|
||||
complete -c journalctl -f -s h -l help -d 'Prints a short help text and exits'
|
||||
complete -c journalctl -f -l version -d 'Prints a short version string and exits'
|
||||
|
@ -9,7 +37,9 @@ complete -c journalctl -f -l no-tail -d 'Show all lines, even in follow mod
|
|||
complete -c journalctl -f -s o -l output -d 'Controls the formatting' -xa 'short short-monotonic verbose export json json-pretty json-sse cat'
|
||||
complete -c journalctl -f -s q -l quiet -d 'Suppress warning about normal user'
|
||||
complete -c journalctl -f -s m -l merge -d 'Show entries interleaved from all journals'
|
||||
complete -c journalctl -f -s b -l this-boot -d 'Show data only from current boot'
|
||||
|
||||
# Boot number (0 for current, -X for the Xst to last boot) with time as description
|
||||
complete -c journalctl -f -s b -l this-boot -d 'Show data only from a certain boot' -a '(journalctl --list-boots --no-pager | while read a b c; echo -e "$a\\t$c"; end)'
|
||||
complete -c journalctl -f -s u -l unit -d 'Show data only of the specified unit' -xa "(__fish_systemctl_services)"
|
||||
complete -c journalctl -f -s p -l priority -d 'Filter by priority' -xa 'emerg 0 alert 1 crit 2 err 3 warning 4 notice 5 info 6 debug 7'
|
||||
complete -c journalctl -f -s c -l cursor -d 'Start from the passing cursor'
|
||||
|
|
Loading…
Reference in a new issue